typescript常用代码片段

孙佑运
2023-12-01

1. 对象属性遍历

遍历方式1:使用Object.keys

const p = {
    name: 'li',
    age: 18
}

Object.keys(p).forEach((key)=>{
    console.log((p as any)[key])
});

遍历方式2:使用keyof

interface IPerson {
    name: string;
    age: number;
}

function test(opt: IPerson) {
    let key: (keyof IPerson);
    for (key in opt) {
        console.log(opt[key]);
    }
}

遍历方式3:使用Object.entries

const obj = {
    name: 'li',
    age: 18,
};

Object.entries(obj).forEach(([k, v]) => {
    console.log(k, v);
});

遍历方式4:使用for in

const obj = {
    name: 'li',
    age: 18,
};

for (let k in obj) {
    console.log((obj as any)[k]) 
}

2. 数组遍历

方法一:for…of

let array = [1, 2, 3];
for (let entity of array) {
    console.log(entity);
}


方法二: for循环

let array = [1, 2, 3];
for(let i=0; i<array.length; i++) {
    console.log(array[i])
}


方法三:forEach

let list = [1, 2, 3];
list.forEach((val, idx, array) => {
    // val: 当前值
    // idx:当前index
    // array: Array
});


方法四,every和some
因为forEach在iteration中是无法返回的,所以可以使用every和some来取代forEach。

let list = [1, 2, 3];
list.every((val, idx, array) => {
    // val: 当前值
    // idx:当前index
    // array: Array
    console.log(`val=${val}`)
    return true; // Continues
    // Return false will quit the iteration
});

3. Map嵌套定义

export class UnitSystem {
    allUnitSystem: { [key: string]: { [key: string]: string } } = {
        'SI1': {
            length: '1',
        },
        'SI2': {
            length: '2',
        }
    }
}

4. 使用keyof定义类的索引类型

keyof是索引类型查询操作符。假设T是一个类型,那么keyof T产生的类型是T的属性名称字符串字面量类型构成的联合类型。注意keyof产生的是数据类型,并非数据本身。

interface IPerson {
    name: string;
    age: number;
}
 
type P = keyof IPerson;

let a: P = "name";
let b: P = "age";
let c: P = 12;

5. 使用类类型

在工厂方法中经常会使用类类型,如下函数,第一个参数是类类型,第二个参数是构造函数的参数。new ()表面第一个参数是类类型。

const execute = (ClassName: new (...args: any[]) => Command, ...args: any[]) => void;

 类似资料: