下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 24 | 理解声明合并
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看

TypeScript开发实战

共47讲 · 约450分钟
2996
免费
01 | 重塑“类型思维”
免费
02 | 类型基础(1):强类型与...
免费
03 | 类型基础(2):动态类型...
免费
04 | 编写你的第一个TypeScrip...
免费
05 | 基本类型
06 | 枚举类型
07 | 接口(1):对象类型接口
08 | 接口(2):函数类型接口
09 | 函数相关知识点梳理
10 | 类(1):继承和成员修饰...
11 | 类(2):抽象类与多态
12 | 类与接口的关系
13 | 泛型(1):泛型函数与泛...
14 | 泛型(2):泛型类与泛型...
15 | 类型检查机制(1):类型...
16 | 类型检查机制(2):类型...
17 | 类型检查机制(3):类型...
18 | 高级类型(1):交叉类型...
19 | 高级类型(2):索引类型
20 | 高级类型(3):映射类型
21 | 高级类型(4):条件类型
22 | ES6与CommonJS的模块系统
23 | 使用命名空间
24 | 理解声明合并
25 | 如何编写声明文件
26 | 配置tsconfig.json(1)...
27 | 配置tsconfig.json(2)...
28 | 配置tsconfig.json(3)...
29 | 编译工具:从ts-loader到...
30 | 代码检查工具:从TSLint到...
31 | 使用Jest进行单元测试
32 | 创建项目
33 | 组件与类型(1):函数组...
34 | 组件与类型(2):高阶组...
35 | 事件处理与数据请求
36 | 列表渲染与路由
37 | Redux与类型
38 | 搭建服务端开发环境
39 | 列表的CRUD
40 | 导出Excel
41 | 搭建Vue开发环境
42 | 组件封装
43 | 组件发布
44 | 共存策略
45 | 宽松策略
46 | 严格策略
47 | 结束语
本节摘要

精选留言(6)

  • 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 = {}));

    相信这里就不难看出来了。
    展开
    7
  • 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,也发生了合并

  • namespace lib 会编译为
    lib || lib = {}

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

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

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

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

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