Typescript01
认识Typescript
- js超集
- 静态类型语言:编译阶段检查语法
- 支持ES6-ES10甚至ESNext语法
- 兼容各种浏览器服务器,完全开源
优点: 程序更易理解,效率更高,更少错误,
一、数据类型
简单类型
1. js基本类型 :"string, number, boolean, undefined, null, bigint, symbol
> undefined和null是所有类型的子类型
2. 任何类型 :"any
联合类型 :a|b
复杂类型
1. object类型
2. 数组类型 :arr[] 元素类型一致
元组类型 :[string, number]
二、接口Interface-> 描述某种类型
```
1. 描述对象类型
interface Obj{
readonly id: number; //只读属性,不允许二次修改(放前面
name: string;
age: number;
gender ?: string //?:可选属性(放最后
}
let person:Obj = {
id:1,
name: "xiaoli",
age: 21
}
2. 描述类
interface A{
fn1();
}
class AA implements A{
fn1(){ "具体实现"};
}
```
枚举
- 常量值-可进行常量枚举
const enum Direction{
Up = "UP",
Down = "DOWN"
}
- 计算值-
类型别名
type typename = string|number;
function(a: typename):number{ }
类型断言
获取联合属性|共有属性之外的独有属性
a: string|number
const b = a as String
console.log(b.length)
快捷写法
a: string|number
(<string>a).length
三、泛型Generics⭐
先占位<T>,使用时才指定类型,使得输出与输入同类型的值
function fn<T>(a:T):T{ return a}
约束泛型
interface Ilength{ length: number}
function fn<T extends Ilength>(a:T):T{ return a.length }
四、声明文件
文件后缀: name.d.ts
declare var Jquery:(selector:string) => any
简单方式:npm install @types 库名
网址http://definitelytyped.org/
五、类class与函数类型
类的特性:继承封装多态
类的修饰符
public(默认-都可访问)、private(类自身可访问))、protected(类自身和子类可访问)
readonly(只读)
static(属于类自身的属性/方法)
函数
function add(x:number, y:number):number{
return x+y;
}