type``class``interface三个的语义和其他语言基本类似。
    TypeScript中的类型采用的是鸭子类型,包含了某个类全部的属性,就可以当做这个类。

    1. class Person {
    2. name: string = ""
    3. }
    4. class Custom {
    5. name: string = ""
    6. }
    7. let cust: Custom = new Person() // 可以
    1. class Person {
    2. name: string = ""
    3. age: number = 0
    4. }
    5. class Custom {
    6. name: string = ""
    7. }
    8. let cust: Custom = new Person() // 可以
    1. class Person {
    2. name: string = ""
    3. }
    4. class Custom {
    5. name: string = ""
    6. age: number = 0
    7. }
    8. let cust: Custom = new Person() // 不可以

    上述的鸭子类型只在对象创建的时候有用,instanceof还是会正确指明声明的类型。

    1. class Dog {
    2. name: string = ""
    3. }
    4. class Fish {
    5. name: string = ""
    6. }
    7. let d: Fish = new Dog()
    8. console.log(d instanceof Fish); // false
    9. console.log(d instanceof Dog); // true