typescript基礎(chǔ)知識(shí)_2021-02-18

1.基本數(shù)據(jù)類型

//npm install typescript ts-node -g

//code runner

//ts中冒號(hào)后面的都是類型
const str: string = 'hello zf';
const num: number = 12;
const boolean: boolean = true;

//聯(lián)合類型
let age: string | number = 1;
age = 'hello';

//對(duì)象 數(shù)組 函數(shù)
const arr: number[] = [1,2,3];

//元組
const tuple: [string, number] = ['zf', 1];//指定第一個(gè)必須是字符串,第二個(gè)是數(shù)字
console.log('tuple')

let n: null = null;
let u: undefined = undefined;

//枚舉 只是聲明類型的
enum USER_ROLE {
USER,
MANAHGER,
ADMIN
}
console.log(USER_ROLE.USER) //0

enum USER_ROLE2 {
USER = 'user',
MANAHGER = 'manager',
ADMIN = 'admin'
}
console.log(USER_ROLE2.USER) //user

//any 如果區(qū)分不出來(lái)是什么類型,可以標(biāo)記為any類型
const array: any = [{}, 'a', 123]

//object類型 非原始數(shù)據(jù)類型
//Object.create(arr);
const create = (obj:object)=> {

}
create({});
create([]);
create(function(){});

//對(duì)象類型 (重要)

export {}

2.接口 用來(lái)描述對(duì)象形狀的 interface

interface ISchool {
readonly name: string,
age: number,
address?: string //表示這個(gè)屬性可有可無(wú)
}

let school: ISchool = {
name: 'zf',
age: 11,
address: 'huilongguan'
}
//school.name = 'www' 不可以

//接口可以擴(kuò)展
interface Izhuf extends ISchool {
type: string
[key: string]: any //任意類型
}
let zhuf: Izhuf = {
...school,
type: 'web',
a: 1,
b: 2
}

//類型斷言,表示這個(gè)對(duì)象就是這樣一個(gè)類型
let school2: ISchool = ({
name: 'zf',
age: 11,
address: 'hhhhh',
lessons: ['吃飯','學(xué)習(xí)']
}) as ISchool

3.function

//函數(shù)主要關(guān)系返回值和參數(shù)
function sum1(a: string, b: string): string{
return a + b;
}
sum1('a', 'b');

//可以通過(guò)表達(dá)式來(lái)定義
//聲明一個(gè)類型
type Sum = ((aa: number, bb: number) => number)| string //表示類型是一個(gè)函數(shù)或者字符串
const sum2:(a: number, b: number) => number = (a:number, b:number):number => a + b
const sum3:Sum = (a:number, b:number):number => a + b
//接口
interface Sum2 {
(a: number, b: number): number
}
//區(qū)別type和interface
//interface 可以繼承 可以被類來(lái)實(shí)現(xiàn)
//type僅僅是一個(gè)別名 一版在定義聯(lián)合類型,定義臨時(shí)變量時(shí)可以使用

let sum33 : Sum = (a: number, b: number): number => a + b;
sum33 = 'hello'

4.泛型 generic

//泛型 用來(lái)在代碼執(zhí)行時(shí)傳入的類型,來(lái)確定結(jié)果

function createArray<T>(len:number, value:T):T[]{
let result = [];
for(let i=0;i<len;i++){
result.push(value);
}
return result;
}
let arr = createArray(3, 'hello')

//多個(gè)泛型 元組的交互[boolean, number]= [number, boolean]
const swap = <T,K>(tuple:[T,K]):[K,T]=>{
return [tuple[1],tuple[0]]
}
swap([1,2])
swap<string, number>(['2',3])
export {}

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

相關(guān)閱讀更多精彩內(nèi)容

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