繁体   English   中英

打字稿动态更改对象属性值错误

[英]Typescript change object property values dynamically error

我正在尝试根据属性类型动态更改对象属性值,例如,将所有对象字符串属性替换为“***”。 我不断收到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] = "***";
        }
    }
}

在此处输入图片说明

我不知道为什么要这样做,但最简单的(肮脏的)hack 是将您的文本转换为 any :

if (typeof obj[prop] === "string") {
            obj[prop] = ("***" as any);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM