2015-06-06 5 views
0

вот мой кодконструктор прототипа подкласса перечисляемость в машинописном

class Animal { 
    constructor(public name: string){} 
} 
class Cat extends Animal { 
    constructor(public name: string) { 
     super(name); 
    } 
} 

выводит следующий код:

var __extends = this.__extends || function (d, b) { 
    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; 
    function __() { this.constructor = d; } 
    __.prototype = b.prototype; 
    d.prototype = new __(); 
}; 
var Animal = (function() { 
    function Animal(name) { 
     this.name = name; 
    } 
    return Animal; 
})(); 
var Cat = (function (_super) { 
    __extends(Cat, _super); 
    function Cat(name) { 
     _super.call(this, name); 
     this.name = name; 
    } 
    return Cat; 
})(Animal); 

свойства конструктор прототипа класса Cat является несчетным по умолчанию , но метод __extends изменил это, как я могу это исправить? Я знаю, что следующий код может это сделать, но я хочу, чтобы TypeScript изначально поддерживал!

Object.defineProperty(Cat.prototype, 'constructor', { 
    enumerable: false 
}); 
+1

У меня была аналогичная проблема с '__extends' функции и положение машинописи кажется мейнтейнера быть не использовать ES5 особенности в Это. Однако они позволяют заменять функцию, назначая '__extends' до того, как будет выполнен какой-либо подкласс. –

+0

Эх, почему вам все равно нужна перечислимость объектов-прототипов? – Bergi

ответ

1

Вы должны определить свою собственную __extends переменную, которая использует Object.create вместо new __() установить цепочку прототипов.

Существует запрос особенность, чтобы позволить вам сделать это на глобальном уровне: https://github.com/Microsoft/TypeScript/issues/1622

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