这是我参与「第四届青训营 」笔记创作活动的第4天
初识TypeScript <一>| 青训营笔记
TypeScript属于静态类型,是弱类型语言。包含于兼容JS特行,支持共存,支持渐进式引入升级。TypeScript可读性增强:基于语法解析TSDoc,ide增强,可维护性增强:在编译阶段暴露大部分问题。
常用类型
函数类型
函数的类型实际上指的是参数和返回值的类型。为函数指定类型的;两种方式:
1.单独指定参数、返回值的类型:
function add(num1:number,num2:number):number {
return num1+num2
}
2.同时指定参数、返回值的类型。
对象类型
写法:
let person: {name:string; age:number;sayHi():void}={
name:'Jack',
age:18,
sayHi(){}
}
接口
当一个对象被多次使用时,一般会使用接口(interface)来描述对象的类型,达到复用的目的。
interface Iperson {
name:string
age:number
sayHi():void
}
let person: Iperson = {
name:'Jack',
age:18,
sayHi(){}
}
接口和类型别名的对比:
·相同点:都可以给对象指定类型。
·不同点:接口只能为对象指定类型,类型别名任意。
两个接口之间有相同的属性或方法,可以将公共的属性或方法抽离出来,通过继承来实现复用。
元组
元组类型可以确切地标记有多少元素,以及每个元素的类型:
let a: [number,number] = [1,2]
字面量
字面量类型配合联合类型一起使用,用来表示一组明确可选的可选值表:
function change(direction: 'up' | 'down' | 'left' | 'right') {
console.log(direction)
}
参数direction的值只能是上面四个中的一个,相比于string类型,字面量更加精确严谨。
typeof
使用typeof操作可以获取变量的类型。(只能查询变量或属性的类型)
class类
构造函数:
class Person {
age: number
gender:string
constructor(age: number,gender: string) {
this.age = age
this.gender = gender
}
}
·成员初始化后,才能通过this.age来访问实例成员;需要为构造函数指定类型注解,否则会被隐式推断为any;构造函数不需要返回类型。
类型推论
在TS中,某些没有明确指出类型的地方,TS类型推论机制会帮助提供类型,即在这些地方,类型注解可以不写。
类型断言:
使用as关键字实现,as后面是一个更加具体的类型。
总结
这篇文章只是个人对TS的初步认识,下一篇文章将更深入更全面一点。