类型断言、联合类型、接口、类
类型断言
指预测类型
类型断言有两种形式:
1.尖括号语法: <类型>变量名
let value:string="hello hello";
let len:number = (<string>value).length;
2.as 语法: 变量名 as 类型
let value:string="hello hello";
let len:number = (value as string).length;
变量后面加!,指非空断言,确定赋值断言,确定这个值一定会传 ,变量一定会赋值
let name!: string;
联合类型
联合类型 指通过管道(|)将变量设置多种类型,赋值的时候只能赋值声明时的这几种类型。语法:类型1|类型2|类型3……
let val:string|number
val = 12
console.log("数字为 "+ val)
val = "Runoob"
console.log("字符串为 " + val)
接口 interface
简单理解,就是用来描述对象的类型 ,当确定一个对象的属性名和属性值的类型,就可以对接口内的各种属性进行数据类型限制,使用接口定义这个对象,达到复用
interface : TS 中定义接口的关键字
接口继承使用 extends
interface 接口名称 {
name: string
}
interface Info {
name: string // 必须包含一个name属性,而且是string类型
hobby: string[] // 必须包含一个 hobby 属性, 而且是由 string 组成的数组
city?: string // 选填属性,city属性可有可无, 如果添加了 city 属性, 必须是 string 类型
readonly nationality: string // 只读属性,nationality 属性值定义好以后就不能修改了
[props: string]: any // 额外属性,不确定的属性,但是 key 必须是字符串类型,值可以是任意类型
}
let user: Info = { name: 'h',hobby:["dancing"],city:"beijing",nationality:"china"}
let person: Info = { name: 't',hobby:["swimming"],nationality:"china" }
类 class
类出现的目的,其实就是把一些相关的东西放在一起,方便管理.
类中包含两个东西(也叫成员):属性、方法 ; 类的成员就是类中所有的属性和方法
class
关键字可以方便的定义一个类
通过new
关键字可以方便的生产一个类的实例对象,这个生产对象的过程叫实例化。
实例在new
出来的时候,实际是调用了类中的constructor方法进行初始化
class People {
name: string; // 静态属性
constructor(name: string) { // 类的构造函数
this.name = name; // 给静态属性赋值
}
}
访问修饰符的作用就是用于限制别人乱用类中的东西:
访问修饰符
public
公开的,谁都能用(默认public)private
私有的,仅类自己里头才能使用protected
受保护的,仅仅类和类的子类能使用
只读修饰符 readonly
静态修饰符 static
静态的 通过static
修饰的成员叫静态成员,静态成员无需实例化,直接通过类名调用