машинопись, ошибка с частичной <T>? - PullRequest
2 голосов
/ 21 апреля 2020

Следующий код вызывает ошибку. Но if гарантирует, что e не является неопределенным. Это ошибка в машинописи или нормальное поведение? Кроме того, как правильно это сделать?

function Foo<T>(data: T, partialData: Partial<T>, key: keyof T) {
    const e = partialData[key];
    if (e)
        data[key] = e;
}
Type 'T[keyof T] | undefined' is not assignable to type 'T[keyof T]'.
  Type 'undefined' is not assignable to type 'T[keyof T]'.

1 Ответ

0 голосов
/ 21 апреля 2020

вы можете использовать as T[keyof T] вот так, чтобы решить проблему:

function Foo<T>(data: T, partialData: Partial<T>, key: keyof T) {
    const e = partialData[key];
    if (e)
        data[key] = e as T[keyof T];
}

здесь вы отметите это детская площадка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...