• Ryn
    2019-08-02
    针对视频中的问题,其实编译成es5之后不难发现,声明枚举类型时,会提前声明变量,因此不需要提前声明函数;而其他的不同,都是需要将函数变量传入闭包中,因此函数需要写在前面。

    function Lib() {}
    namespace Lib {
        export const version = '0.1'
    }
    编译之后
    function Lib() { }
    (function (Lib) {
        Lib.version = '0.1';
    })(Lib || (Lib = {}));

    枚举情况:
    enum Color {
        RED,
        BLUE,
    }
    namespace Color {
        export const version = '0.1'
    }
    编译之后:
    var Color;
    (function (Color) {
        Color[Color["RED"] = 0] = "RED";
        Color[Color["BLUE"] = 1] = "BLUE";
    })(Color || (Color = {}));
    (function (Color) {
        Color.version = '0.1';
    })(Color || (Color = {}));

    相信这里就不难看出来了。
    展开
     1
     9
  • lgc
    2020-02-10
    类与函数必须要先定义才能添加对应的成员或者属性及方法;
    枚举的话本身就是直接在个对象上添加属性,与命名空间无前后之分,都会创建这个名称的对象。
    
    
  • 汤显文
    2020-01-05
    好像没有讲装饰器
    
    
  • 嘎啦儿。
    2019-11-26
    interface A {
        x: number;
    }
    interface A {
        y: number;
    }
    let InterA: A = {
        x: 1,
        y: 2,
    };
    在编辑器里程序会提示报错:Type '{ x: number; y: number; }' is missing the following properties from type 'A': id, name [2739]
    不是定义多个接口A可合并吗?
    展开

    作者回复: 你在其他地方也定义了A接口,包含了id和name,也发生了合并

    
    
  • 东丰瑞雪建华年
    2019-08-10
    namespace lib 会编译为
    lib || lib = {}

    enum 类型是对象而不是函数类型兼容,所以对顺序没要求
    
    
  • 古夜
    2019-08-06
    请问老师,现有的d.ts文件里缺少函数startWith,该怎么办呢?我测试过,确实点不出来

    作者回复: 是不是打错了,你少了个s,startsWith 在 lib.es2015.core.d.ts 中是有定义的

     1
    
  • 3Golds
    2019-08-06
    老师可以推荐一些书籍吗,大而全,比较详细的。

    作者回复: TS的吗?现在还没有很好的,有一些都是翻译官方文档。

    
    
  • Hurry
    2019-08-02
    对于视频中的问题: A namespace declaration cannot be located prior to a class or function with which it is merged. 对于它的理解,class 可以理解,导致重复声明变量名,语法会报错,对于 function, 则会把 namespace 整个声明覆写掉,对于枚举, 都是对象,不会有问题,最多把对象的属性覆写掉
    
    
我们在线,来聊聊吧