@webe
frontend

Почему ругается на свойство в типе?

Подскажите плиз, хочу сделать тип, но почему-то возникает ошибка "A mapped type may not declare properties or methods."

{
age:number;
name:number;
test:number;
}

const a = {age:18, name:"alex"}
type T =  {
  [K in keyof typeof a]: number;
   test: number;
};


https://www.typescriptlang.org/play?#code/MYewdgzg...
  • Вопрос задан
  • 221 просмотр
Решения вопроса 1
@vshvydky
const a = {age:18, name:"alex"}
type T =  {
  [K in keyof typeof a]: typeof a[K];
} & {
   test: number;
};

// больше свободы 
type TT<OB> = {
 [K in keyof OB]: OB[K];
} & {
   test: number;
};


const t1: T = {test: 1, age: 1, name: 1} // ошибка
const t2: T = {some: 1, name: "Fewfwefw" }; // ошибка
const t3: T = {age:19, name: "ivan", test: 1 }; // корректно

const tt1: TT<typeof a> = {test: 1, age: 1, name: 1} // ошибка
const tt2: TT<typeof a> = {some: 1, name: "Fewfwefw" }; // ошибка
const tt3: TT<typeof a> = {age:19, name: "ivan", test: 1 }; // корректно
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы