Typescript изменить значения свойств объекта динамически ошибка - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь динамически изменять значения свойств объекта в зависимости от типа свойства, например, заменить все свойства строки объекта на «***». Я продолжаю получать Type '"***"' is not assignable to type 'T[keyof T]'

Я пытался найти правильный способ сделать это в репозитории Typescript GitHub, но безуспешно.

Я использую последнюю версию Typescript на момент написания этого «3.8.2».

Кто-нибудь знает, как правильно изменять значения свойств объекта при динамическом доступе к свойствам?

Пример:

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] = "***";
        }
    }
}

enter image description here

1 Ответ

1 голос
/ 26 февраля 2020

Я не знаю, зачем делать это, но самый простой (грязный) взлом, чтобы сделать это, приводит вас к любому тексту:

if (typeof obj[prop] === "string") {
            obj[prop] = ("***" as any);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...