安装Typescript
Typescript官网地址: https://www.typescriptlang.org/zh/
使用 nvm 来管理 node 版本: https://github.com/nym-sh/nvm
安装Typescript:
npm install -g typescript
使用tsc全局命令:
//查看tsc版本
tsc -v
//编译ts文件
tsc 文件名.ts
原始数据类型
javascript类型分类:Boolean,Null,Underfined,Number,BigInt,String,Symbol
typescript类型介绍:
//在ts里变量名冒号后面可以规定类型
//布尔型
let isDone: boolean = false
//接下来是number,注意es6还支持2进制和8进制
let age: number = 10
let binaryNumber: number = 0b1111
//字符串,es6新增的模版字符串
let firstName: string = 'viking'
let message: string = `Hello, ${firstName}`
let u: undefined = undefined
let n:null = null
let num: number = undefined
//这是any任意类型,允许调用方法
let notSure: any = 4
notSure = 'maybe a string'
notSure = true
notSure.myName
notSure.getName()
数组和元祖
//Array和Tuple
//最简单的方法是使用【类型+方括号】来表示数组
//不允许出现其他类型在数组里
let arrOfNumbers: number[] = [1,2,3]
arrOfNumbers.push(3)
//元祖的表示和数组接近,对每一项都有限制的作用
let user: [string, number] = ['viking', 20]
Interface接口
Duck Typing概念:如果某个东西长得像鸭子,像鸭子一样游泳,像鸭子一样嘎嘎叫,那么它就可以被看成一只鸭子。
//这里定义了一个借口Person
interface Person {
readonly id: number;
name: string;
age?: number;
}
//readonly代表只读的意思,?代表可以不写
//接着定义一个变量kali,它的类型为Person,这样就等于约束了这个变量
let kali: Person = {
id: 1,
name: 'kali',
age: 20,
}
函数
//定义一个函数,约定输入的参数和输出的参数,?代表可选填的参数
const add = (x: number, y: number, z?: number): number => {
if (typeof z === 'number') {
return x + y + z
} else {
return x + y
}
}
//intesrface 描述函数类型
interface ISum {
(x: number, y: number, z?: number): number
}
let add2: ISum = add
枚举
//字符串枚举
const enum Direction {
Up = 'UP',
Down = 'DOWN',
Left = 'LEFT',
Right = 'RIGHT',
}
const value = 'UP'
if (value === Direction.Up) {
console.log('go up!')
}
//数字枚举
enum Direction {
Up,
Down,
Left,
Right,
}
console.log(Direction.Up)
//输出的是0