“ =”在通用参数定义中是什么意思?

时间:2019-11-20 02:22:41

标签: typescript

ef都是正确的,但是为什么f函数起作用?我已经看到像DP extends Partial<P> = Partial<P>这样的代码,但是我想知道为什么=在那里。

interface I {
    name: string
}

type IOpt = Partial<I>

function e<E extends IOpt>(p: E) {
    p.name = 'p'
}
function f<E extends IOpt=IOpt>(p: E) {
    p.name = 'p'
}

已更新:为什么下面的代码不起作用?

function f<E=IOpt>(p: E) {
    p.name = 'p'
    ~Property 'name' does not exist on type 'E'.
}

1 个答案:

答案 0 :(得分:0)

function f<E=IOpt>(p: E) {
    p.name = 'p'
}
您的示例中的

不会进行类型检查,因为不能保证泛型类型E具有name属性。

例如:f(42)-这是一个有效的呼叫,而pnumber