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

TypeScript开发实战

共47讲 · 约450分钟
2988
免费
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 | 结束语
本节摘要

学完这门课程,你有那些收获和建议?
欢迎通过下面的链接给我们反馈:https://jinshuju.net/f/bCGJe4

课件及源代码地址

https://github.com/geektime-geekbang/typescript-in-action

展开

精选留言(11)

  • 2019-11-21
    老师有没有用ts写的好一点的RN的项目地址,我参考参考

    作者回复: react-native-ui-kitten

  • 2019-11-17
    fadeAnim : new Animated.Value(80)
    老师这个fadeAnim改定义成什么类型

    作者回复: 你是指RN中的Animated吧?有段时间没有使用过了,查了一下,声明文件还不支持,社区有一些此问题的讨论,希望能帮到你:
    https://github.com/DefinitelyTyped/DefinitelyTyped/issues/12202

  • 2019-11-15
    更正笔误,AddForm 改成 AddItem,ModifyForm 改成 ModifyItem,它们都共用 FormItem。
  • 2019-11-15
    老师好,我碰到一个项目中写 typescript 的问题,想请教下。我有一个组件 ItemForm,它可以在 AddForm,ModifyForm 组件中复用,这个组件接收两个参数 type(比如 add/modify),和 item。我现在的问题是,如果是 AddForm,就只需要传 type;ModifyForm 就传 type 和 item。我的 interface 该怎么写呢。我知道写成 { type: any; item?: any } 是可行的,可是这样的话我在 ModifyForm 中也没法提示必须传 item 参数了,在 ItemForm 中还要处理一堆 if (this.props.item) {} 的判断,要不然 TS 会报 item 可能是 undefined,如果它能知道在 type=modify 的时候 item 肯定存在就好了。
    有更好的定义写法吗?谢谢。
    展开

    作者回复: 可以把FormItem用高阶组件包装一下,增加一个item属性,给ModifyForm使用,type属性也不需要了。比如:

    const FormItem = () => <input />

    interface Item {
        value: string
    }

    function attachItem<P>(WrappedComponent: React.ComponentType<P>) {
        return class extends Component<P & Item> {
            render() {
                const { value, ...props } = this.props;
                return value ? <input value ={value} /> : <WrappedComponent { ...props as P } />;
            }
        }
    }
    const FormItemWrapped = attachItem(FormItem);

    class AddForm extends Component {
        render() {
            return <FormItem />
        }
    }

    class ModifyForm extends Component {
        render() {
            return <FormItemWrapped value='xxx' />
        }
    }

    2
  • 2019-11-06
    课程真的很不错 实战,基础都是超级好 值得学习
  • 2019-10-11
    老师 把咱们上课的的源码下载下来了 打开里面竟然有报错 我想知道这种问题怎么解决,这个引发的原因是什么?是不是跟IDE的配置有关系?望赐教
    下面试代码合报错信息提示
    代码:
    ~~~
    // 函数
    let add = (x: number, y: number) => x + y
    let compute: (x: number, y: number) => number
    compute = (a, b) => a + b
    ~~~
    报错提示:
    ~~~
    let add: (x: number, y: number) => number
    无法重新声明块范围变量“add”。ts(2451)
    math.ts(1, 10): 'add' was also declared here.
    ~~~
    展开

    作者回复: ts-base这个工程包含很多节课的代码,报错都是变量重名问题。先只保留index.ts,要测试哪段代码就单独引入吧。

    1
  • 2019-09-29
    9.28号,在古北水镇看见你了

    作者回复: 哈哈 好巧

    2
  • 2019-09-08
    老师, 那像装饰器这种特性在课程里面为什么没有讲解呢?是使用场景比较少吗?

    作者回复: 装饰器是ES的内容,并不是TS的特性,所以没有特别讲。

    1
  • 2019-08-29
    讲的很好,感谢老师!
  • 2019-08-28
    本课程学到的最重要点应该是 建立类型思维
  • 2019-08-28
    课程很不错,老师江湖再见。

    作者回复: 江湖再见^_^