是否有Typescript编译器标记,使得以下代码无法编译?
interface A {
key: number
}
var B = {} as A;
对于任何类型A扩展为B的情况,要使上面的内容编译,都必须使用双重声明:var B = {} as any as A;
此场景的其他一些示例,其中A扩展了B,但是允许断言B属于A类型。
class A {
public key = 1;
}
var B = {} as A; // Would not want to compile
declare var A: number | null;
var B = A as number; // Would not want to compile
答案 0 :(得分:0)
我不确定您的最终目标是什么,但是我可以解释为什么下面的代码可以编译:
interface A {
key: number
}
var B = {} as A;
TypeScript具有结构类型系统。您使用一个空对象{},该对象与任何其他类型都兼容。这就是为什么没有错误。
仍然,尝试更好地描述您的目标。