Инициализация v2 ниже дает: Type 'T[keyof T]' cannot be converted to type 'number'.
Что не так?Как я могу заставить этот тип-тип Typecript работать в контексте общего типа?
private func<T extends Object>(o:T, prop: keyof(T)): void {
const val = o[prop]
if (typeof val === 'number') {
const v2: number = val as number
}
}
Это работает в необщем контексте, ниже, [UPDATE], но это не является полезным в качестве обходного пути, так как абоненты могут использовать только свойство самого объекта.
private func2(o:Object, prop: keyof(Object)): void {
const val = o[prop]
if (typeof val === 'number') {
const v2: number = val as number
}
}
Это глупый пример, который я извлек, чтобы сосредоточиться на проблеме; если реальный контекст поможет, дайте мне знать.
Вам нужно отдать его на номер? Не выведен ли тип? –
@MuratK. Такая же ошибка (с несколько иной формулировкой) возникает, если я не произнесения. Я включил актерский состав, потому что, если бы я этого не сделал, я бы получил комментарии, которые я должен попробовать! ;-) –
Если кто-нибудь еще эксперт может объяснить, ПОЧЕМУ, что в этом случае не работает типограф, я был бы благодарен. Мне интересно, писать ли на нем проблему (отчет об ошибке). –