typescript 学习日志

1. 属性名前面加上 readonly 关键字,表示这个属性是只读属性,不能修改。typescript 里面的readonly 是真的在初始化的时候确定其值不可改变,而非C#里面一样的其实是一个计算属性。

 注意,如果属性值是一个对象,readonly修饰符并不禁止修改该对象的属性,只是禁止完全替换掉该对象。——这个跟我的理解完全一致。

2. 如果需要扩展Window 或 Document,需要通过 interface ,这个也算是interface 的一个用处了:

举例来说,Web 网页开发经常会对window对象和document对象添加自定义属性,但是 TypeScript 会报错,因为原始定义没有这些属性。解决方法就是把自定义属性写成 interface,合并进原始定义。

其实我扩展Array、String等等对象,也是这样来的 —— 我早就开始这样使用了。

interface Document {
  foo: string;
}

document.foo = 'hello';

3. typescript 不但支持重载,结合它的语法规则,而且在重载的使用中还可能更好的完成开发者的意图:

 

4.class命令也有类似作用,通过定义一个类,同时定义一个对象类型。但是,它会创造一个值,编译后依然存在。如果只是单纯想要一个类型,应该使用typeinterface

5.

interface 与 type 的区别有下面几点。

(1)type能够表示非对象类型,而interface只能表示对象类型(包括数组、函数等)。

(2)interface可以继承其他类型,type不支持继承。

6.interface 可以继承 type。type 也可以继承 interface。

 7.同名interface会自动合并,同名type则会报错。也就是说,TypeScript 不允许使用type多次定义同一个类型。

 

8.this关键字只能用于interface。 —— 【西西 2024-03-27 114139】这一点很重要:

 

9.如果有复杂的类型运算,那么没有其他选择只能使用type;一般情况下,interface灵活性比较高,便于扩充类型或自动合并,建议优先使用。

10.interface 只是指定检查条件,如果不满足这些条件就会报错。它并不能代替 class 自身的类型声明。

 

11.子类不能定义父类私有成员的同名成员。

 

12.

13.

14.

15.

16.

 

posted @ 2024-03-22 11:15  oct  阅读(16)  评论(0)    收藏  举报