const p = {
name: 'li',
age: 18
}
Object.keys(p).forEach((key)=>{
console.log((p as any)[key])
});
interface IPerson {
name: string;
age: number;
}
function test(opt: IPerson) {
let key: (keyof IPerson);
for (key in opt) {
console.log(opt[key]);
}
}
const obj = {
name: 'li',
age: 18,
};
Object.entries(obj).forEach(([k, v]) => {
console.log(k, v);
});
const obj = {
name: 'li',
age: 18,
};
for (let k in obj) {
console.log((obj as any)[k])
}
let array = [1, 2, 3];
for (let entity of array) {
console.log(entity);
}
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
});
export class UnitSystem {
allUnitSystem: { [key: string]: { [key: string]: string } } = {
'SI1': {
length: '1',
},
'SI2': {
length: '2',
}
}
}
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;
在工厂方法中经常会使用类类型,如下函数,第一个参数是类类型,第二个参数是构造函数的参数。new ()表面第一个参数是类类型。
const execute = (ClassName: new (...args: any[]) => Command, ...args: any[]) => void;