e
和f
都是正确的,但是为什么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'.
}
答案 0 :(得分:0)
function f<E=IOpt>(p: E) {
p.name = 'p'
}
您的示例中的不会进行类型检查,因为不能保证泛型类型E
具有name
属性。
例如:f(42)
-这是一个有效的呼叫,而p
是number
。