2016-05-30 2 views
1

Какое соглашение (стандартное) в TypeScript для атрибутов класса?Условия использования setterterterterScript

В угловом 2 демо (The Heroes Tour от angular.io) все атрибуты устанавливаются для общественности:

export class Hero { 
    id: number; 
    name: string; 
} 

Таким образом, они могут быть инстанциирован оба пути:

var hero: Hero = new Hero(); 
hero.id = 0; 
hero.name = "hero"; 

или

var hero2: Hero = {id : 0, name: "hero"}; 

Есть ли соглашение по стилю Java (например, это):

export class Hero { 
    private id: number; 
    private name: string; 

    setId(id: number): Hero { 
     this.id = id; 
     return this; 
    } 

    setName(name: string): Hero { 
     this.name = name; 
     return this; 
    } 

    getId(): number { 
     return this.id; 
    } 

    getName(): string { 
     return this.name; 
    } 
} 

декларация (Exemple):

var hero: Hero = new Hero(); 
hero.setId(0).setName('hero'); 

var hero2: Hero = new Hero().setId(0).setName('hero'); 
+3

Возможный дубликат http://stackoverflow.com/questions/12827266/get-and-set-in-typescript –

+0

Возможно, это может быть полезно?http://stackoverflow.com/questions/12713659/typescript-private-members –

+0

Обратите внимание, что 'hero instanceof Hero === true' в то время как' hero2 instanceof Hero === false', поэтому они не совпадают. –

ответ

-2

Есть ли соглашение стиль Java (как это)

вы можете сделать это (и на самом деле у меня есть). Люди используют getter/setter, а также:

export class Hero { 
    private _id: number; 

    set id(id: number) { 
     this._id = id; 
    } 
} 

Однако, будьте осторожны, чтобы не ставить слишком много логики в инкубационных: https://basarat.gitbooks.io/typescript/content/docs/tips/propertySetters.html. Обычно я предпочитаю явные вызовы функций.

var hero2: Hero = {id : 0, name: "hero"}; 

Это слабость (или сила удобства) в структурных характере проверки типа машинописи в. More on this.

+0

Никто не запрещает вам это делать, но это не конвенция, и она слишком деликатная и может стать довольно уродливой очень быстро –

0

Тип машиностроения преобразуется в javascript плана, поэтому ... если вам нужно что-то до или после установленного значения, как вести журнал, вы должны реализовать. Если нет необходимости, геттер и сеттеры будут излишними. Создатели экземпляров, для меня, одинаковы для Java.

Пример:

export class Person{ 
    public name: string; 
    public anotherAttribute: string; 
    private age: number; 
    private _birth: Date; 

    public set birth(birt: Date){ 
     this._birth = birth; 
     this.age = calculateAge(birth); 
    } 
    ....... 
} 


let person: Person = new Person(); 
person.name = "John"; 
...... 
0

есть ява стиль конвенции

Ну вы можете сделать это, если вы хотите, но так как они на разных языках, вы, вероятно, следует использовать условные машинопись, которые, как правило, напрямую получить доступ к «членам» через. но это возможно для всех, кто работает с машинописным текстом .. и, возможно, с java-разработчиками), насколько я люблю java. Я понимаю, что кодирование традиционно бы набирало в 2 раза полезное.

На самом деле это обычная шутка среди разработчиков, такие языки, как Java являются overdeclarative

Т.Л., др .. нет использовать myObject.myMember для доступа пользователей непосредственно

0

Ну вы можете сделать это, если вы хотите, но так как они разные языки

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