# 基础类型
- 布尔
boolean
let isDo:boolean = true
- 数值
number
let num:number = 11
- 字符串
string
let str:string = '码不停息'
- 数组
number[]Array<number>
let arr1:number[] = [1,2,3]
let arr2:Array<number> = [1,2,3]
- 元组 允许表示一个已知元素数量和类型的数组,各元素的类型不必相同
let x: [string, number];
let arr:[string,number,boolean] = ['码不停息',1,true]
- 枚举 enum
枚举成员不可修改,可以是常量,表达式,也可以是变量
enum People{
name1,
name2,
name3
}
enum learn {
a,
b = 2,
c = 1 + 3, //表达式
e = '123'.length
}
- 任意值
any顾名思义 任意类型都可以
let a:any=4
- 空值
void当一个函数不返回任何东西时 nullundefined
# 接口
interface List {
readonly id:number; // 只读
name?:string|number; //可有可无类型为 字符串或者数组
data:number; //类型为数组
eat?():void; //申明一个函数 , 该函数没法返回值
}
// 使用
let s:List = {
id:1,
data:100,
eat:()=>{
console.log(1)
}
}
a.id = 2 // 报错 , 不可更改
// 接口也可以继承
interface Shape {
color: string;
}
interface PenStroke {
penWidth: number;
}
interface Square extends Shape, PenStroke {
sideLength: number;
}
let square = <Square>{};
square.color = "blue";
square.sideLength = 10;
square.penWidth = 5.0;
# 类
class Demo {
name: string;
constructor(name: string) {
this.name = name
}
greet() {
return this.name
}
}
// 继承
class Demo2 extends Demo {
age: number;
constructor(name: string, age: number) {
super(name);
this.age = age;
}
}
和ES6中类的写法几乎一样 就是加了类型
# 函数
# 标注类型
// 函数需要标注类型
function fn(x: number, y: number): number {
return x + y
}
# 设置参数有无
// 可设置参数有无
function fn(x: number, y?: number): number {
return x + y
}
# 剩余参数
function buildName(firstName: string, ...restOfName: string[]) {
return firstName + " " + restOfName.join(" ");
}
buildName("码","不","停","息")