初入typescript筆記

typescript 的基本類型
1.number 數字類型 example:es6

let val: Number = 2
2.string 字符串 example:typescript

let val: String = '2'
3.Boolean 布爾類型 example:數組

let val: Boolean = false
4.array 數組 example:函數

let val: Array <Number> = [2,3] //只能數字
leg val: number[] = [1,2,4,5] //數組裏只能是所有數字rest

// 類數組有本身的定義方式
let args: IArguments = arguments;
5.Boolean 元祖 example:code

let x = [String, Number]
x = ['val', 2]
// 按定義順序排序
6.enum 枚舉 example:server

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:three

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()
            }
        }

    }
}

})()

相關文章
相關標籤/搜索