什么是 TypeScript?
TypeScript,简称 ts,是微软开发的一种静态的编程语言,它是 JavaScript 的超集。
简单来说,js 有的 ts 都有,所有 js 代码都可以在 ts 里面运行。
ts 支持类型支持,ts = type +JavaScript。
类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| let age: number = 18
let name: string = 'dinghw'
let isLoading: boolean = false
let un: undefined = undefined
let timer:null = null
let id:symbol = Symbol()。
|
联合类型
也就是说明 b 这个变量既可以是字符串也可以是数字类型
类型别名
使用场景:给复杂的类型起个别名
1 2 3 4
| type s = string type n = number let a: s = '1' let b: n = 1
|
数组类型
1 2
| const arr:number[]=[1,2,3] const arrList:Array<number|string>=[1,2,3,'dhw']
|
对象类型
1 2 3 4 5 6 7 8 9 10 11
| type Person={ name:string|number, age:number, say():void, } const person:Person={ name:"dhw", age:12, say(){}, }
|
函数类型
函数涉及的类型实际上指的是:函数参数和返回值的类型
1 2 3 4 5 6 7 8 9 10 11 12
| function 函数名(形参1: 类型=默认值, 形参2:类型=默认值,...): 返回值类型 { }
function add1(num1: number, num2: number): number { return num1 + num2 }
const 函数名(形参1: 类型=默认值, 形参2:类型=默认值, ...): 返回值类型 => { } const add2 = (a: number =100, b: number = 100): number =>{ return a + b }
|
接口
当一个对象类型被多次使用时,有如下两种方式来来描述对象的类型,以达到复用的目的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| interface Person{ name: string, price: number, func: ()=>string }
const man:Person={ name:'dhw', price:1, func(){ return '看电视' } }
type Ren={ name:string|number, age:number } const ding:Ren={ name:"dhw", age:12 }
|
接口和类型的区别 interface(接口)和 type(类型别名)的对比
相同点:
1、都可以给对象指定类型
2、都支持扩展,type 通过 & 来扩展,interface 通过 extends 关键字来扩展
不同点:
1、interface 可以声明合并,如果是 type 的话,就会报重复定义的警告,无法实现声明合并。
2、类型别名,不仅可以为对象指定类型,实际上可以为任意类型指定别名
接口继承
如果两个接口之间有相同的属性或方法,可以将公共的属性或方法抽离出来,通过继承来实现复用 语法:
1 2 3 4 5 6 7 8 9 10 11 12
|
interface listA{ a:number, b:number } interface listB extends listA{ c:number } let obj:listB={ a:1,b:2,c:3 }
|