Típusdefiníciót a objektumliterálnak géppel

szavazat
158

Géppel osztályban lehetőség van nyilvánítja típusú tulajdonság, például:

class className{
    property : string;
};

Hogyan kell írni a kódot, hogy állapítsa típusú ingatlan objektumliterálnak? Az ilyen kódot nem állítanak össze:

var obj = {
    property: string;
};

(Kapok hiba - A név „string” nem létezik a jelenlegi hatály).

Mit csinálok rosszul, vagy ez egy bug?

A kérdést 08/10/2012 19:58
a forrás felhasználó
Más nyelveken...                            


8 válasz

szavazat
226

Te elég közel, akkor csak ki kell cserélni a =egy :. Használhatja egy objektum típusú szó (lásd a specifikációt 3.5.3) vagy egy felületen. Segítségével egy objektum típusú literál közel van mit:

var obj: { property: string; } = { property: "foo" };

De akkor is interfészt használ

interface MyObjLayout {
    property: string;
}

var obj: MyObjLayout = { property: "foo" };
Válaszolt 08/10/2012 20:08
a forrás felhasználó

szavazat
131

Használja a leadott üzemeltető, hogy ez a tömör (öntéssel null a kívánt típus).

var obj = {
    property: <string> null
};

Egy hosszabb példa:

var call = {
    hasStarted: <boolean> null,
    hasFinished: <boolean> null,
    id: <number> null,
};

Ez sokkal jobb, mint ha két részből (egy nyilatkozni típusú, a második, hogy állapítsa meg az alapértelmezett):

var callVerbose: {
    hasStarted: boolean;
    hasFinished: boolean;
    id: number;
} = {
    hasStarted: null,
    hasFinished: null,
    id: null,
};

Frissítés 2016/02/10 - To Handle TSX (Köszönet @Josh)

A következő a kezelő számára TSX.

var obj = {
    property: null as string
};

Egy hosszabb példa:

var call = {
    hasStarted: null as boolean,
    hasFinished: null as boolean,
    id: null as number,
};
Válaszolt 11/10/2012 05:50
a forrás felhasználó

szavazat
8

Ha próbál írni a típus kommentár, a szintaxis a következő:

var x: { property: string; } = ...;

Ha akarsz írni egy tárgy szó, a szintaxis a következő:

var x = { property: 'hello' };

A kód akarják használni a típusnév értékben helyzetbe.

Válaszolt 08/10/2012 20:08
a forrás felhasználó

szavazat
4

Géppel ha már nyilvánító objektumban

[Hozzáférési módosító] változó nevét: {// szerkezete objektum}

private Object:{Key1:string , Key2:number }
Válaszolt 08/01/2017 15:05
a forrás felhasználó

szavazat
0
// Use ..

const Per = {
  name: 'HAMZA',
  age: 20,
  coords: {
    tele: '09',
    lan: '190'
  },
  setAge(age: Number): void {
    this.age = age;
  },
  getAge(): Number {
    return age;
  }
};
const { age, name }: { age: Number; name: String } = Per;
const {
  coords: { tele, lan }
}: { coords: { tele: String; lan: String } } = Per;

console.log(Per.getAge());
Válaszolt 02/10/2019 18:56
a forrás felhasználó

szavazat
0

Az Ön kódja:

var obj = {
  myProp: string;
};

Akkor tulajdonképpen létre objektumliterálnak és hozzárendeljük a változó karakterláncot az ingatlan myProp. Bár nagyon rossz gyakorlat ez ténylegesen érvényes TS-kód (ne használja ezt!):

var string = 'A string';

var obj = {
  property: string
};

Azonban, amit akar, hogy a tárgy szó gépelt. Ez úgy érhető el különböző módokon:

Felület:

interface myObj {
    property: string;
}

var obj: myObj = { property: "My string" };

Egyéni típusa:

type myObjType = {
    property: string
};

var obj: myObjType = { property: "My string" };

Szereplők üzemeltetője:

var obj = {
    myString: <string> 'hi',
    myNumber: <number> 132,
};

Ingatlan típusa szó:

var obj: { property: string; } = { property: "Mystring" };
Válaszolt 05/08/2019 12:06
a forrás felhasználó

szavazat
0

Meglep, hogy ez senkit nem említette ezt, de akkor is csak létrehozni egy egységes felületen nevű ObjectLiteral, mint ez:

interface ObjectLiteral {
  [key: string]: any;
}

Akkor érdemes használni, mint ez:

let data: ObjectLiteral = {
  hello: "world",
  goodbye: 1,
  // ...
};

Lehet újra használni ezt egyetlen felületet ahányszor csak szeretne.

Sok szerencsét.

Válaszolt 20/05/2019 11:56
a forrás felhasználó

szavazat
0

Ha megpróbálunk hozzáadni tipizálását a roncsolt objektumliterálnak, például érveket a funkciót, a szintaxis a következő:

function foo({ bar, baz }: { bar: boolean, baz: string }) {
  // ...
}

foo({ bar: true, baz: 'lorem ipsum' });
Válaszolt 07/03/2019 01:22
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more