网站搜索

TypeScript 类型检查未能发现错误的赋值


class BaseClass {}

var cls:BaseClass = 1234;

你可以在 TypeScript playground 上尝试这个:http://www.typescriptlang.org/Playground/

上面的代码非常简单,但 TypeScript 并没有发现错误。由于这个错误非常明显,这让我怀疑自己是否做错了什么。

答案#1

这不是一个错误,因为它不是一个失误。BaseClass 类型没有成员,所以在结构类型系统中,它是所有类型的超类型。如果你向它添加任何成员(这些成员也不是 Number 的成员),你将会得到一个错误:

class BaseClass {
    x;
}

var cls:BaseClass = 1234; // Error