【发布时间】:2026-02-12 20:50:01
【问题描述】:
我有以下两个sn-ps: 1.
interface Identity {
<T extends any>(arg: T): T
}
function identity<T>(arg: T) {
return arg
}
let id: Identity = identity
id() // the argument here is of type unknown
interface Identity<E> {
<T extends E>(arg: T): T
}
function identity<T>(arg: T) {
return arg
}
let id: Identity<any> = identity
id() // the argument here is of type any
在第一种情况下,我有一个名为ObjectType 的通用调用签名,通过interface declaration 引入,在第二种情况下,我有一个generic interface declaration,在实例化时给出相同的ObjectType相同的通用调用签名。所以,AFAIK,在这两种情况下,我都应该在TypeReferences 中得到这个ObjectType:
{
<T extends any>(arg: T): T
}
但是在调用id 函数时,在第一种情况下,参数的类型是unknown,而在第二种情况下,它的类型是any。有人可以澄清两个sn-ps之间的区别吗?谢谢。
【问题讨论】:
标签: typescript