一:为什么要用ts
- ts具有类型系统,且是js的超集。js能做的,ts能做;js不能做的,ts也能做。
- js是弱类型并且没有命名空间,导致很难模块化,使得其在大型的协作项目中不是很方便。
- 可以使用
泛型
来创建可重用的组件。即创建一个参数类型
和返回值类型
是一样的通用方法。
TypeScript 相比于 JavaScript 具有以下优势
- 更好的可维护性和可读性
- 引入了静态类型声明,不需要太多的注释和文档,大部分的函数看类型定义就知道如何使用了
- 在编译阶段就能发现大部分因为变量类型导致的错误
二:interface和type的区别
相同点:
1、 interface和type都可以实现继承,但他们的表现形式不同。
// interface:extends
interface Name {
name: string
}
interface User extends Name {
age: number;
}
// type:利用交叉类型实现的继承
type Name = {
name: string;
}
type User = Name & { age: number };
2、interface和type可以相互继承
// interface extends type
type Name = {
name: string;
};
interface User extends Name {
age: number;
}
// type & interface
interface Name = {
name: string;
};
type User = Name & { age: number };
不同点
1、 interface可以合并声明, type不行
interface User {
name: string
age: number
}
interface User {
sex: string
}
/*
User {
name: string
age: number
sex: string
}
*/
2、 type可以申明基本类型别名、联合类型、元组等类型
// 基本类型别名
type Name = string
// 联合类型
interface Dog {
wong();
}
interface Cat {
miao();
}
type Pet = Dog | Cat
// 具体定义数组每个位置的类型
type PetList = [Dog, Pet]