打字稿代码令我困惑

时间:2017-06-28 16:46:34

标签: typescript2.0

有一个问题让我很困惑。 网站上的教程(http://www.typescriptlang.org)介绍了如下语法:

https://i.stack.imgur.com/3t4ui.png

这意味着{name:“Alice”}是{name:“Alice”的子类型,location:“seattle”}(显然,有多余的属性),但是打字稿文件告诉我们如下: " S是类型T的子类型,如果S没有关于T&#34的多余属性,则T是S的超类型;

1 个答案:

答案 0 :(得分:0)

我相信它告诉你的是对象y必须与对象x的类型相同或至少是子类型。 x是y的一部分,但不是相反。这是使用类而不是对象的差异的更具体示例,

class x {
constructor(public name: string){}
}

class y extends x {
constructor(public name: string, public location: string){
    super(name);
}
}

let myX: x = y; // OK
let myY: y = x; // Error:  "Type 'typeof x' is not assignable to type 'y'. Property 'location' is missing in type 'typeof x'. let myY: y"

//在typescript操场上PLUG这段代码,看看它是否有用......:)