共计 2365 个字符,预计需要花费 6 分钟才能阅读完成。
typescript 的基本类型 1.number 数字类型 example:
let val: Number = 22.string 字符串 example:
let val: String = ‘2’3.Boolean 布尔类型 example:
let val: Boolean = false4.array 数组 example:
let val: Array <Number> = [2,3] // 只能数字 leg val: number[] = [1,2,4,5] // 数组里只能是全部数字
// 类数组有自己的定义方式 let args: IArguments = arguments;5.Boolean 元祖 example:
let x = [String, Number] x = [‘val’, 2] // 按定义顺序排序 6.enum 枚举 example:
enum val {one = 3, two, three} let curVal: val = val.one console.log(curVal) // curVal: 3
let val : String | null | undefined = ” val = 2 // 创建变量可以多个变量属性注意:假设第一行代码声明了变量 num 并 = 设置初始值为 2。注意变量声明没有指定类型。因此,程序使用类型推断来确定变量的数据类型,第一次赋值为 2,num 设置为 number 类型。
7.interface 接口 example:
interface Person {
name: string;
age: number;
[val: string]: any
// 可以定义左边可以设置是字符串还是数字
}
let tom: Person = {
name: ‘Tom’,
age: 25
};
interface Person {
readonly name: string; // 只能创建的时候被赋值
age?: number; // 这个字段可以没有
}
let tom: Person = {
name: ‘Tom’,
};
// class 类中接口的使用
interface ClockInterface {
currentTime: Date;
}
class Clock implements ClockInterface {
currentTime: Date;
constructor(h: number, m: number) {}
}
typescript 的函数使用方法 // 传入的参数也可以设置类型 function func(one: Number = 2, two?:string): Number {
conosle.log(two) // 默认输出 undefined
return one + two
} func(1) // Nan
// 添加 number 就必须要有返回数字,不然会报错。如果不想返回就把 number 换成 void
//es6 的解构用法 function fun (…rest: Number[]):Number {
return rest
}
// 函数里的断言 <>val || < 类型 > 值
function getLength(something: string | number): number {
if ((<string>something).length) {// 不确定这边的值是 number 还是 string. <string> 确定是 string 就可以获取长度
return (<string>something).length;
} else {
return something.toString().length;
}
}
// 返回一个数组
function argArray(…something: Number[]): Array<number> {
return something;
}
// 传入一个 为定义的参数
function argArray<T>(…something: Number[], value: T): asy{
// value 属于为定义的属性类型
return something;
}
example: argArray(1,2,4,’str’)
// value 会自动匹配成‘str’的类型
// ts 的基本使用
function Throttling(callback:()=> void, time:number):()=> void {
let recording: number | undefined = undefined
return function ():void {
if(<undefined>recording)clearTimeout(recording)
recording = setTimeout(() => {
callback()
},time)
}
} 用 ts 写了一个终结者模式
interface parameter {
name: string;
backCall?: () => {};
}let observer = (function(){
let obj = {}
return {
add(parameter): void {
let val: Array<any> | undefined = obj[parameter.name]
if(<Array<any>>val){
val.push(parameter.backCall)
}else{
obj[parameter.name] = []
obj[parameter.name].push(parameter.backCall)
}
// <Array<any>>val ? obj[parameter.name].push(parameter.backCall) : obj[parameter.name] = [], obj[parameter.name].push(parameter.backCall)
},
run(runComman:string): void{
let val: Array<any> | undefined = obj[runComman]
if(<Array<any>>val){
for(let key of val){
key()
}
}
}
}
})()