我正在尝试根据属性类型动态更改对象属性值,例如,将所有对象字符串属性替换为“ ***”。我不断收到Type '"***"' is not assignable to type 'T[keyof T]'
我试图在Typescript GitHub存储库中找到正确的方法,但是没有运气。
在撰写此“ 3.8.2”时,我正在使用最新版本的Typescript。
有人知道动态访问属性时更改对象属性值的正确方法是什么吗?
示例:
interface IClassA {
name: string;
age: number;
}
const user: IClassA = {
name: "Jhon Doe",
age: 20
};
obfuscate(user);
export function obfuscate<T extends IClassA>(obj: T) {
for (const prop of Reflect.ownKeys(obj) as (keyof T)[]) {
if (typeof obj[prop] === "string") {
obj[prop] = "***";
}
}
}
答案 0 :(得分:1)
我不知道为什么要这样做,但是最简单的(肮脏的)黑客将您的文本投射给任何人:
if (typeof obj[prop] === "string") {
obj[prop] = ("***" as any);
}