目录
一、基础类型和基础用法
这里有个细节就是变量声明 :
const是对let的一个增强,它能阻止对一个变量再次赋值。如果在同一作用域内重复声明某个变量或常量就会报错,所有typescript内推荐使用它们来代替 var。
二、类型断言
类型断言可以用来手动指定一个值的类型。
语法:<类型>值 或 值 as 类型
var str = '1' //数字或者所有类型都可以 var str2:number = <number> <any> str //str、str2 是 string 类型 console.log(str2) //用完断言打印数字1
注意:断言不被称为类型转换,是因为转换通常意味着某种运行时的支持。但是,类型断言纯粹是一个编译时语法 。
三、typescript接口
TypeScript的核心原则之一是对值所具有的结构进行类型检查,接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法。
1.我们通过实例介绍:(interface关键字定义接口)
interface A { //定义了一个接口 A Name:string, age:number, sayHi: ()=>string } var customer:IPerson = { Name:"小陈", age:21, sayHi: ():string =>{return "Hi"} } console.log("Customer 对象 ") console.log(customer.Name) //小陈 console.log(customer.age) //21 console.log(customer.sayHi()) //Hi
2.可选属性
可选属性的好处之一是可以对可能存在的属性进行预定义,好处之二是可以捕获引用了不存在的属性时的错误。只需在可选属性名字定义的后面加个?
interface SquareConfig { color?: string; width?: number; } //函数传入的参数对象中只有部分属性赋值了,这里只给接口来定义的color赋值了 function createSquare(config: SquareConfig): { color: string; area: number } { if (config.clor) { // Error: Property 'clor' does not exist on type 'SquareConfig' newSquare.color = config.clor; } }
3.只读属性
属性名前用 readonly
来指定只读属性:
1.interface A { readonly x: number; readonly y: number; } //赋值后, x和y再也不能被改变了。 let p: A = { x: 10, y: 20 }; p.x = 5; // error!
TypeScript具有ReadonlyArray<T>
类型,可以确保数组创建后再也不能被修改
1.let A: number[] = [1, 2, 3, 4]; let B: ReadonlyArray<number> = A; B[0] = 8; // error! A = B; // error!赋值也不可以 //想赋值的话可以用类型断言重写 A = B as number[];