type``class``interface三个的语义和其他语言基本类似。
TypeScript中的类型采用的是鸭子类型,包含了某个类全部的属性,就可以当做这个类。
class Person {name: string = ""}class Custom {name: string = ""}let cust: Custom = new Person() // 可以
class Person {name: string = ""age: number = 0}class Custom {name: string = ""}let cust: Custom = new Person() // 可以
class Person {name: string = ""}class Custom {name: string = ""age: number = 0}let cust: Custom = new Person() // 不可以
上述的鸭子类型只在对象创建的时候有用,instanceof还是会正确指明声明的类型。
class Dog {name: string = ""}class Fish {name: string = ""}let d: Fish = new Dog()console.log(d instanceof Fish); // falseconsole.log(d instanceof Dog); // true
