TS筆記

// 普通數(shù)據(jù)類型
const num: number = undefined
// 函數(shù)的默認(rèn)參數(shù)和可選參數(shù)
function f1(arg1: string = 'cat', arg2?: boolean): any {
    return `${arg1}+${arg2}`
}
console.log(f1())
// null undefined 和void的區(qū)別  null 和undefined是所有類型的子類型 void不是  可以理解就是undefined
let a: void;
let b: number = undefined
// 任意值
let c: any = 'hello word'
// 聯(lián)合類型
let d: string | number | any = 3
d = true
//   函數(shù)中的參數(shù)如果是聯(lián)合類型,函數(shù)中的方法要聯(lián)合類型公用的方法 要不會報錯

//--------------------------------------------
// 對象的類型使用接口 interfaces
// 必須得一直(順序不一定一致)
// 注意interface 中是;(分號)
//  注意一但使用propName  定義了類型   
//那么本定義的對象和他的實際對象類型都得是這個類型,要不然會報錯
interface Person {
    name: string;
    [propName: string]: any;
    age?: number;
}

let tom: Person = {
    name: 'Tom',
    age: 1,
    gender: 'male'
};
// 比如這種  兩種都會報錯 所以使用propName的時候定義為any類型
// interface Son{
//     name:string;
//     [propName:string]:string;
//     a?:number;
// }
// let father:Son={
//     name:'1',
//     age:40,
// }

//  對象中的只讀 定義再key前面   屬性值不可以修改
interface Read {
    readonly name: string;
}
let R: Read = {
    name: 'name'
}
// 這里修改 name  會報錯
// R.name = '333'

//---------------------------------------
//數(shù)組的類型
//(數(shù)組中的類型必須得都是前面定義的否則會報錯)
let arr: number[] = [1, 24, 2]
// 比如這樣的會報錯
// let arr1:string[] = [1,'3']

//  使用數(shù)組泛型定義數(shù)組
let arr3: Array<number> = [1, 2]
// 使用接口定義數(shù)組
interface Arr {
    [index: number]: number;
}
let Arr4: Arr = [1, 23]
// 對于類數(shù)組  使用TS的內(nèi)置對象IArguments TS 有內(nèi)置類型
function sum(): any {
    let argus: IArguments = arguments;
}
//一般常見的數(shù)組定義就是使用any  任何類型
let arr4: any[] = [{ a: 1 }, '2']

//----------------------------------------
// 定義函數(shù)
// 常規(guī)的寫法
//  參數(shù)和類型都會受限制 否則會報錯
// 同時?代表可選
function fun(a: string, b?: number): any {

}
// 使用接口定義
interface Fu {
    (a: number, b: number): number
}
let f3: Fu = function (a: number, b: number): number {
    return a + b;
}
// 函數(shù)表達式的話
let f: (a: number, b: number) => number = function (a: number, b: number): number {
    return a + b;
}

// 剩余參數(shù)也一樣 (reset要定義為數(shù)組)
function S(a: number[], ...rest: number[]): any {

}
// --------------------------------------------以上是基本數(shù)據(jù)類型

// 類型斷言
// 在函數(shù)中判斷函數(shù)參數(shù)的類型  能夠直觀的判斷數(shù)據(jù)類型
function fs(a: number | string): any {
    if (<number>a) {
        return a;
    } else {
        return 'aa';
    }
}
console.log(fs('a'))

// 定義全局  declare  let a:string = 'a'   declare宣布的意思

//泛型   定義數(shù)據(jù)的時候不聲明類型 再調(diào)用的時候聲明
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容