基本类型:
布尔值
let isDone : boolean = false
数字
let count : number = 3.14
字符串
let name: number = 'lixiucheng'
数组
let arr: number []= [1,2,3]
let arr: Array<number> = 1,2,3
元组 Tupte : 表示一个已知的数量和类型的数组
let count : [string,number] = ['a',3.14]
枚举 enum:是对JS类型的一种补充,默认是从0开始为元素编号,也可以自己定义
enum Color {Red,Bule = 5,Greed = 6}
let a:Color = Color.Red
let b:Color = Color.Greed
let c:string = Color[6]
console.log(a,b,c) => 0,5,Greed
Any:不进行类型检查,直接编译(不能确定具体类型时使用)
Void:与any 相反,表示没有任何类型,当函数没有返回值时,通常使用Viod类型(也可以表示null 和 undefined)
let n:void = undefined
Null 和 undefined 表示 null 和 undefined(默认情况下,null和undefined 是所有类型的子类型,所以也可以赋值给数字,字符串等)
let u:null = null
let n:undefined = undefined
Never:表示永远不存在值得类型,Never 是所有类型得子类型,通常作为抛出异常,没有返回值或箭头函数表达式得返回值
Object 表示非原始类数据
let u:object = {a:1}
类型判断
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
let strLength: number = (someValue as string).length;
接口
- TypeScript的核心原则之一是对值所具有的结构进行类型检查。 被称做“鸭式辨型法”或“结构性子类型化”。 在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。
- interface:定义一个类型集合得接口
interface info {
name : string
age: number
}
- 可选属性:属性名后追加?号
interface info {name? : string}
- 只读属性:属性名前追加 readonly
interface info {readonly name : string}
- 接口继承:接口可以复制其他接口得配置
interface a extends a1, a2 {}
泛型
- 在不确定类型得时候使得返回类型和传入类型相同,只表示类型而不表示值, 不同于any,他不会丢失信息。(接受参数类型T 和 参数 arg)
function a<T>(arg) : T { return arg}
class GenericNumber<T> { a : T}
- 使用泛型变量
必须把参数当作任意类型或者所有类型。- 泛型约束
使用接口通过extends关键字实现约束,表示要传入得参数至少需要相关得属性
interface Lengthwise { length: number; }
function a<T extends Lengthwise>(arg: T): T { console.log(arg.length) }
网友评论