• ...
    2019-10-03
    当一个类型Y可以被赋值给另一个类型X时,可以说类型X兼容类型Y
    1.接口
    成员少的可以兼容成员多的
    2.函数
    1)个数
        多的可以兼容少的
                      固有参数 剩余参数 可选参数
    可选参数 不兼容 不兼容
    剩余参数 兼容 兼容
    固有参数 兼容 兼容
    2)参数类型
    多的可以兼容少的
    3)函数返回值
    少的可以兼容多的
    4)函数重载
    目标函数参数个数多于或者等于源函数参数个数
    3.枚举
    数字和枚举可以相互兼容,枚举与枚举间不兼容
    4.类
    类的构造函数和静态成员不参与比较,当类中有私有成员时,两个类不兼容,类与子类可以
    5.泛型
    1)泛型接口
    在两个泛型参数只有类型不相同时,只有在泛型参数使用时才影响
    2)泛型函数
    展开
    
     1
  • 野原
    2019-08-19
    老师,我没有关闭strictFunctionTypes,b=a和b=c 也不报错啊!

    作者回复: vscode 有时候是会出现这样的问题,我也遇到过,重启一下就正常了

     1
     1
  • 非常菜加一
    2020-02-02
    f 和 g 返回的类型的“父子”关系不对吧?子类型(f)反而成员比父类型(g)少?还是说这里概念上与类的“父子”关系不一样?

    作者回复: 这里说的父子类型不是类中的父子关系,你可以理解为子集关系

    
    
  • 刘小宅
    2019-12-17
    l老师,在接口类型中你说错了, 应该是y 可以被赋值给x的
    
    
  • coder
    2019-11-18
    时间进度1:53 左右,应该是一个口误:

    “x是可以赋值给y的,但是y不能赋值给x”

    但是代码上显示 `x=y` 的时候没有问题,而`y=x`是有问题的。

    所以应该是:

    “y是可以赋值给x的,但是x不能赋值给y”
    展开
    
    
  • lf
    2019-11-16
    1.48
    x=y
    课程说,这是x赋值给y?
    这不是将t赋值给x吗?
    怎么说?
     1
    
  • Henry
    2019-11-12
    最后两个泛型函数 是一样的吧,只是型参 不一样!
     1
    
  • droden
    2019-08-19
    - 当一个类型 Y 可以被赋值给另一个类型 X 时,我们就可以说类型 X 兼容类型 Y;

    ```
      x 兼容 y: x(目标类型) = Y(源类型)

    interface X {
        a: any,
        b: any
    }

    interface Y {
        a: any,
        b: any,
        c: any
    }
    let x: X = {a: q, b: 2}
    let y: Y = {a: q, b: 2, c: 3}
    x = y
    // y = x 报错
    结论1: - 接口之间相互赋值的时候,成员少的会兼容成员多的
    ---------------------------------------------------------
    interface Point3D {
        x: number,
        y: number,
        z: number
    }

    interface Point2D {
        x: number,
        y: number
    }

    let p3d = (point: Point3D) => {}
    let p2d = (point: Point2D) => {}
    p3d = p2d
    结论2: // p3d兼容p2d,成员个数多的兼容成员个数少的,与之前接口兼容性正好相反;
    ------------------------------------------------------
    老师,在10分28秒的时候说,总结一下,参数多的会兼容参数少的,那与结论一是不是相矛盾了?
    展开

    作者回复: 不矛盾,结论1是接口之间的兼容性判断,结论2是函数之间的兼容性判断,这是两回事。

     1
    
  • 周贺
    2019-08-03
    课程中有一句结论:父类和子类的实例是可以完全兼容的。
    这个结论不严谨,可以在子类中增加一个属性调试下。课程中的子类没有新的属性,所以得出上面的结论。如果子类中增加了新的属性,结论可能有点小问题。。

    作者回复: 其实前面提到了,这个结论需要一个前提,就是实例要具有相同的成员,也就是要比较结构。子类加了一个属性,结构就不一致了,自然不兼容。

    
    
我们在线,来聊聊吧