javascript - Typescript-egenskap finns inte på typen {}


Jag har följande kod i Typescript. Varför kastar kompilatorn ett fel?

var object = {};
Object.defineProperty(object, 'first', {
     value: 37,
     writable: false,
     enumerable: true,
     configurable: true
});
console.log('first property: ' + object.first);

js.ts(14,42): fel TS2339: Egenskapen 'first' finns inte på typen '{}'.

Det är samma kodsnutt som i Mozillas dokumentation (exempelavsnittet).

Svar #1

Ett annat sätt är att använda ett gränssnitt, så att kompilatorn kommer att veta att egenskapen finns.

interface IFirst{
  first:number;
}


let object = {} as IFirst;
Object.defineProperty(object, 'first', {
  value: 37,
  writable: false,
  enumerable: true,
  configurable: true
});
console.log('first property: ' + object.first);

Titta på den här frågan Hur man anpassar egenskaper i TypeScript

Svar #2

Gör objekttypen any:

var object: any = {};

Relaterade artiklar