В машинописи, Как использовать универсальный для ограничения и описания типа возвращаемого значения функции - PullRequest
1 голос
/ 21 сентября 2019

Посмотрите код, я думаю, что Том типа BB расширяет AA, поэтому он должен работать

Код ошибки: TS2322: тип 'BB' не может быть назначен типу 'T'

interface AA {
    name: string
}
interface BB extends AA{
    age: number
}
const tom: BB = {
    name: 'tom',
    age: 20
}
function something<T extends AA>(): T {
    return tom
}

Как я могу использовать как

something<BB>() 

, чтобы получить значение, которое расширяет AA;Или

something<CC>() 

, который CC расширяет AA

1 Ответ

0 голосов
/ 21 сентября 2019

Ваша функция идентификации должна выглядеть следующим образом:

interface AA {
    name: string
}
interface BB extends AA{
    age: number
}
const tom: BB = {
    name: 'tom',
    age: 20
}
function identity<T extends AA>(arg: T) {
    return arg
}

identity(tom)

Проблема с текущей реализацией заключается в том, что вы используете определенный тип типа T.

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