#javascript #typescript
#javascript #typescript
Вопрос:
Допустим, у меня есть объект и интерфейс
type A {
one: string,
two: number,
three: string | undefined
}
const a: A = { one: 'test', two: 1, three: 'test'};
type B {
one: string,
three: number,
four: number
}
Я хочу создать вызываемый объект B
, который будет клонироваться A
, но с общими ключами и с тем же типом
Итак, я хочу что-то вроде функции, которая при вводе ObjectA и TypeB поможет мне вернуть B = {one: 'test'}
Спасибо
Комментарии:
1. вы пробовали это: geeksforgeeks.org/lodash-_-clonedeep-method Lodash — хорошая библиотека для работы с объектом
2.
const B = ({one} = A)
3. @bharatpatel спасибо за предложение, это выглядит великолепно, но я также ищу собственное решение для машинописи
4. определите свой тип как класс, и во время копирования вы можете выполнять итерации по прототипу
5. @StackSlave это работает только в том случае, если я знаю ключ «один». Я хочу иметь более общее решение
Ответ №1:
Вы можете использовать стандартное решение для этого, как показано ниже
const b = JSON.parse(JSON.stringify(a))
или
const b = Object.assign({}, a);
Это приведет к клонированию объекта a и не будет содержать никакой ссылки объекта a на объект b после присвоения.
Ответ №2:
В случае, если вы хотите использовать собственное решение typescript, вы можете использовать Pick
для выбора свойств от A
до B
type A = {
one: string;
two: number;
three: string | undefined;
};
type B = Pick<A, "one">;
const b: B = {
one: 'test'
};
const b2: B = {
one: 'test'
two: 'test'; // u'll get a warning
};
Комментарии:
1. привет, для этого мне нужно знать ключевое слово ‘one’, и я на самом деле ищу функцию, которая поможет мне создать объект