TypeScript 开发实战
梁宵
搜狗营销事业部高级架构师
34174 人已学习
新⼈⾸单¥59
课程目录
已完结/共 47 讲
TypeScript 开发实战
登录|注册
留言
11
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 24 | 理解声明合并
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 重塑“类型思维”
02 | 类型基础(1):强类型与弱类型
03 | 类型基础(2):动态类型与静态类型
04 | 编写你的第一个TypeScript程序
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到Babel
30 | 代码检查工具:从TSLint到ESLint
31 | 使用Jest进行单元测试
32 | 创建项目
33 | 组件与类型(1):函数组件与类组件
34 | 组件与类型(2):高阶组件与Hooks
35 | 事件处理与数据请求
36 | 列表渲染与路由
37 | Redux与类型
38 | 搭建服务端开发环境
39 | 列表的CRUD
40 | 导出Excel
41 | 搭建Vue开发环境
42 | 组件封装
43 | 组件发布
44 | 共存策略
45 | 宽松策略
46 | 严格策略
47 | 结课测试&结束语
本节摘要
登录 后留言

全部留言(11)

  • 最新
  • 精选
逃之玉諑
老师有个问题,我在不同的ts文件中定义的同名变量名,会说重复声明.这个怎么解决呢?

作者回复: 使用import 或 export,把文件作为一个模块

2020-06-15
3
润豪
呜呜呜~为什么要支持声明同名的接口呢? 允许声明多个同名的接口, 然后再把同名合并, 为什么不直接禁止声明多个同名接口呢?

作者回复: 我的理解是考虑老项目的迁移成本,还有多人协作

2021-09-03
嘎啦儿。
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-11-26
古夜
请问老师,现有的d.ts文件里缺少函数startWith,该怎么办呢?我测试过,确实点不出来

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

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

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

2019-08-06
2
Ryn
针对视频中的问题,其实编译成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 = {})); 相信这里就不难看出来了。
2019-08-02
4
28
lgc
类与函数必须要先定义才能添加对应的成员或者属性及方法; 枚举的话本身就是直接在个对象上添加属性,与命名空间无前后之分,都会创建这个名称的对象。
2020-02-10
3
注释码纪
命名空间的本质是闭包 从编译的代码中可看到命名空间是外部传入了一个对象或者声明了一个对象 function o() {} !(function (e) { e.version = '1.0'; })(o || (o = {})), console.log(o.version); 这段代码如果反过来,就是先给o为赋值为Object,再将o赋值为function,两者都是引用类型,后者会覆盖前者 本质上来说是function继承于Object原型
2020-05-23
2
汤显文
好像没有讲装饰器
2020-01-05
东丰瑞雪建华年
namespace lib 会编译为 lib || lib = {} enum 类型是对象而不是函数类型兼容,所以对顺序没要求
2019-08-10
收起评论