【发布时间】:2020-08-19 06:51:46
【问题描述】:
我试图了解 TypeScript 行 A 是如何编译而 B 行不编译的。
function someFunction<T>(arg: T): void {
console.log(arg)
}
someFunction<string>('some string') // obviously, it works
someFunction<string>(null) // [A] compiles
someFunction<string>(2) // [B] doesn't compile
在A 行中,我暗示编译器该参数是string 类型,而显然不是。然而,TypeScript 将编译该行而不会发出任何错误。
这不会发生在 B 行。我传递了一个 number 并暗示它是一个 string。
A 行怎么没有编译失败? null 类型有特殊情况吗?
尽管进行了谷歌搜索,但我找不到令人满意的解释。非常欢迎提供资源链接来解释我的代码中发生了什么。
【问题讨论】:
-
它在操场上失败,错误:
Argument of type 'null' is not assignable to parameter of type 'string'.(2345)。你能发布你的tsconfig.json吗? typescriptlang.org/play?#code/…
标签: typescript