大雄不爱吃肉
很适合新手,入门到实践,希望老师继续出一门课程,不管啥课都行
作者回复:感谢支持!
2020-05-11
6
唐金州
强烈推荐大家学习,相较于 react vue 之类的框架,学习 ts 更为重要,也是趋势,进大厂必备技能之一
2019-07-17
36
王炳祺
老师被你华丽的言语所吸引了,一个语言被你介绍的如此生动形象,佩服佩服。我觉一个程序员会写代码真的不牛逼。会写代码并且还能口吐莲花的程序员,非常的Skr~。
2019-07-17
62
嘿喂狗
终于看完了所有的课程,比起之前自己啃文档。很多地方真的有融会贯通的感觉,很多地方值得反复观看。等以后遇到了还能再回来复习。谢谢老师。老师讲的很好,希望老师以后能出更多的课程,再来跟老师一起学习。
作者回复:很高兴你能有收获,我在和大家的讨论中也在一起进步。
2020-06-15
3
面白
鸭子那个比喻很形象
2020-03-29
2
+*
老师您好。对于交叉类型有一点疑问,如果两个类型定义了同一个方法,那么在交叉类型中要如何写呢?
interface DogType {
run(): void
eat(x: number): number
}
interface CatType {
jump(): void
eat(y: string, z: string): string
}
let pet: DogType & CatType = {
run() {},
jump() {},
// eat(x: number): number;
// eat(y: string, z: string): string;
// eat(y: string | number, z?: string): string
// 以上三种好像都不对。eat 应该怎么写呢?
}
作者回复:这个问题比较有趣。接口的属性分两种,如果是基本类型,比如:
interface A {
a: number
}
interface B {
a: string
}
let foo: A & B = {
a:
}
你会发现对象 foo 的属性 a 的类型应该是 never,即 number & string 的类型。但 TS 规定没有任何值可以赋值给 never 类型,所以无论怎么赋值都会失败。
如果属性是函数,情况略有不同:
interface A {
f(a: number): number
}
interface B {
f(a: string, b: string): string
}
let foo: A & B = {
f(a: never) {
return a
}
}
在交叉类型中,发生了函数重载,foo中的具体实现应该是一个宽泛的版本,同时兼容A和B中的定义:参数个数上,要选择最少的,参数类型和返回值类型参考前面的例子,取 number & string,即 never。这样不会报错。
实际上应该避免这种情况发生,仅做实验探讨吧。
2020-03-26
3
魔灵
课程真的很不错 实战,基础都是超级好 值得学习
2019-11-06
炼
讲的很好,感谢老师!
2019-08-29
Hurry
本课程学到的最重要点应该是 建立类型思维
2019-08-28
许童童
课程很不错,老师江湖再见。
作者回复:江湖再见^_^
2019-08-28
编辑推荐
包含这门课的学习路径
前端工程师
24门课程 109.3w人学习
看过的人还看了