为什么这是合法的TypeScript?
var x: number = 5
var y: Object = x
Run Code Online (Sandbox Code Playgroud)
肯定有一个数字不是Object.有人可能怀疑x被隐式强制(自动装箱)到一个对象,但没有:
if (!(y instanceof Object)) {
console.log(typeof y)
}
Run Code Online (Sandbox Code Playgroud)
版画
number
Run Code Online (Sandbox Code Playgroud)
作为记录:
$ tsc --version
Version 1.8.10
Run Code Online (Sandbox Code Playgroud) 我做了一个简单的测试夹具:
export interface ITest1 {}
export interface ITest2 {}
export interface ITestGeneric<T> {}
export function test() {
let p: ITestGeneric<ITest1> = {}
let q: ITestGeneric<ITest2> = p;
}
Run Code Online (Sandbox Code Playgroud)
我希望最后一行失败,因为在C#中这种不兼容的类型分配不起作用.但是,打字稿无需投诉即可编译.
有人能告诉我为什么这样做有效以及我必须做些什么来使其失败?