T 和“T 延伸未知”之间的打字稿差异

Sur*_*esh 13 typescript typescript-generics

在typescipt中,用作类型参数时T和之间有什么区别。T extends unknown例如:

function check<T extends unknown>(x: T): T {
    return x;
}
Run Code Online (Sandbox Code Playgroud)

function check<T>(x: T): T {
    return x;
}
Run Code Online (Sandbox Code Playgroud)

他们在行为方面有什么区别吗?

bea*_*der 6

我相信这些或多或少是等效的:

\n

https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-0.html#new-unknown-top-type

\n
\n

unknown是 any 的类型安全对应项。任何东西都可以分配给unknown,但是unknown\xe2\x80\x99 不能分配给除了它本身之外的任何东西,并且any没有类型断言或基于控制流的缩小。unknown同样,如果没有首先断言或缩小到更具体的类型,则不允许对 进行任何操作。

\n
\n

  • 是的。我早些时候就在这个链接上,是的,他们也感觉和我一样。但我看到“T 扩展未知”在我需要使用的代码库中广泛使用。不幸的是,作者无法访问。所以我想我会在这里问一下以绝对确定这一点。 (2认同)