2014-12-07 3 views
3

У меня есть эта переменная объекта в классе a:Как определить типы объектной переменной в TypScript?

class a { 
    abc = { 
    def: number = 22 // won't work 
    } 
    ghi: number = 23; // works 

.. 

Как я могу определить (встроенный без использования интерфейса) типа переменной def, которая находится внутри объекта abc?

Я попытался использовать этот синтаксис, но он не примет его.

ответ

2

Как это может быть - это использование Assert и встраиваемыми заявление:

class MyClass { 
    abc = <{ def : number }>{ 
    def: 1, 
    }; 
} 

То же самое, но немного более удобным для чтения с явным интерфейсом

interface IMyObject{ 
    def : number 
} 

class MyClass1 { 
    abc = <IMyObject>{ 
    def: 1, 
    }; 
} 

Проверить это here

И почему это?

class a { 
    abc = { 
    def: number = 22 // won't work 
    } 
    ghi: number = 23; // works 

, поскольку ГХИ является членом/свойство класса а - так же, как это:

class MyClass { 
    // standard way how to define properties/members of a class 
    public obj: number; 
    private other: string; 
} 
0

Просто FYI. Без использования типа утверждение:

class a { 
    abc : {def:number} = { 
    def : 22 // Works 
    } 
    ghi: number = 23; // works 
} 

Примечание: в вашем случае все возможное, чтобы позволить компилятору Infer тип подписи для вас.

Смежные вопросы