const getArray = (value: any, timers: number = 5): any[] => {
return new Array(timers).fill(value);
}
console.log(getArray({ name: "zhangsan", age: 20 }, 3));
console.log(getArray(9, 3).map(_ => _ + 2));
console.log(getArray('hello', 3).map(_ => _.length));
const getArrayGen = <T>(value: T, timers: number = 2): T[] => {
return new Array(timers).fill(value);
}
console.log(getArrayGen<number>(4))
console.log(getArrayGen<string>('qwe', 3))
console.log(getArrayGen<object>({ name: 'asan', sex: 'man' }, 1))
const getArrayParam = <T, U>(param1: T, param2: U, timers: number = 2): Array<[T, U]> => {
return new Array(timers).fill([param1, param2])
}
console.log(getArrayParam<number, string>(2, 'wanghui'))
let getArray2: <T>(arg: T, times: number) => T[]
getArray2 = (arg: any, times: number) => {
return new Array(times).fill(arg)
}
console.log(getArray2<string>("wo shi array2", 2))
type getArray3 = <T>(arg1: T, times: number) => T[]
let getArray3: getArray3 = (arg: any, timers: number) => {
return new Array(timers).fill(arg);
}
console.log(getArray3({ age: 20, weight: 45 }, 2))
interface GetArray {
<T>(arg: T, time: number): T[]
}
let getArray4: GetArray = (arg: any, time: number) => {
return new Array(time).fill(arg)
}
console.log(getArray4('小桥流水人家', 2))
interface IGenSetAll<T> {
(param: T, color: number): T[],
array: T[]
}
- 泛型的约束,以及条件限制,必需有length属性的
interface IValueHasLength {
length: number
}
const getArray5 = <T extends IValueHasLength>(arg: T, times: number): T[] => {
return new Array(times).fill(arg)
}
console.log(getArray5({
length: 3
}, 2))
const getProps = (object, propName) => {
return object[propName]
}
const objs = {
a: 'a',
b: 'b'
}
console.log(getProps(objs, 'a'))
- keyof 属性名 返回一个对象上的所有属性的集合(数组)
- 那我们怎么在使用的时候就直接避免这种undefined的情况呢。请看如下:
const getProps6 = <T, K extends keyof T>(object: T, propName: K) => {
return object[propName]
}
const showObj = {
a: 'name',
b: 'size'
}
console.log(getProps6(showObj, 'a'))