typescript
ts
基础类型:
布尔值 let isDone:boolean = false
数字 let decNumber:number = 2
字符串 let name:string = `abc`
数组 let array:number[] = [1,2,3] ||
let array:string[] = [`1`,`2`,`3`] ||
let list:Array<number> = [1,2,3]||
数组泛型 let list:Array<string> = [`1`,`2`]
元组 let x:[string,number] x= ['abc',100]
枚举 enum Color { Red = 1,Green='#eee',Blue }
let colorName:string = Color[2]
let c:Color = Color.Red
任意类型 let notSure:any= 4 || notSure = `abc` || notSure = false
没有类型 void function test():void{
}
let msg:void = undefined || null
undefined null 默认是所有类型的子类型 都可以赋值为这两个
永远不存在的类型 Never function error(msg:string):never{
throw new Error(msg)
}
Object declare function create(o:Object|null):void;
create({prop:0})
类型断言
尖括号 let msg:any = `abc`; let strLen:number=(<string>msg).length
as 语法 let sttLen:number=(msg as string).length
q1:数组泛型和数组的区别
--strictNullChecks标记
联合类型
ts 遍历对象、数组
变量声明
var 闭包 setTimeout(立即执行函数)
let 作用域
const
解构数组 一一对应 let [f0,f1] = [1,2] 一对多 let [f0,...rest] = [1,2,3,4]
解构对象 let {a,b} = o let {a,...reset} = o
let { a:newName,b:newName2} = o
解构函数声明 type C = {a:string ,b:number}
function f({a,b}:C):void{
}
与解构相反的是 展开
接口对象 interface
interface data {
name:string;
age?:number;
readonly height:number;
[propName: string]: any;
}
接口函数
interface SearchFunc{
(name:string,age:number):booloean
}
let mySeach:SearchFunc;
mySeach = function(name:string,age:number):booloean{
let s = name.search(age);
return result > -1
}
interface StringArray{
[index:number]:string
}
let mArray:StringArray;
mArray = ['q','e']
let mStr:string = mArray[0]
接口继承
interface Shap {
color:string;
}
interface Per extends shap{
sideLength: number;
}
let sq = <Per>{};
sq.color = 'abc'
sq.sideLength = 12
ReadonlyArray<T>类型
let a:number[] = [1,2]
let ra:ReadonlyArray<number> = a
ra[0]
a = ra as number[]
使用:做为变量使用的话用 const,若做为属性则使用readonly。
类
class person{
static origin = {x: 0, y: 0};
protected width: string;
readonly numberOfLegs: number = 8;
public name:string;
private age:number;
public constructor(msg:string){
this.name = msg;
}
public greet(){
return 'hello ,'+this.name
}
}
let msg = new person('hzy')
存取器 getters/setters get set
抽象类
abstract class Person{
abstract makeSound(): void;
move(): void {
console.log('roaming the earch...');
}
}
高级技巧
构造函数
class Greeter{
}
let greeterMaker: typeof Greeter = Greeter;
函数
函数类型
function add(x: number, y: number): number {
return x + y;
}
let myAdd = function(x: number, y: number): number { return x + y; };
书写完整函数类型
let myAdd: (x: number, y: number) => number =
function(x: number, y: number): number { return x + y; };
推断类型