1 回答

TA貢獻1777條經驗 獲得超10個贊
我能找到的最干凈的解決方案如下:
interface UserProps {
name?: string;
age?: number;
}
export class User {
constructor(private data: UserProps) {}
// Add generic magic here
get<K extends keyof UserProps>(propName: K): UserProps[K] {
return this.data[propName];
}
set(update: UserProps): void {
Object.assign(this.data, update);
}
}
或者,您可以添加任意鍵索引以及更新 get 語句的類型。
interface UserProps {
name?: string;
age?: number;
// this next line is important
[key: string]: string | number | undefined;
}
export class User {
constructor(private data: UserProps) {}
// number|string changed to number|string|undefined
get(propName: string): number | string | undefined {
return this.data[propName];
}
set(update: UserProps): void {
Object.assign(this.data, update);
}
}
添加回答
舉報