2014-01-13 5 views
2

Это выглядит странно для меня, но машинописи 0.9.5 компилятор не генерирует никаких ошибок во время компиляции, когда я пишу что-то вроде:Нет время компиляции ошибки Машинописи для перечислений

enum A { 
    a, 
    b, 
    c, 
} 

var x : A = 20; 

Для сравнения C# компилятора поднимет следующее сообщение об ошибке : Невозможно неявно преобразовать тип 'int' в 'System.Security.AccessControl.AccessControlSections'. Явное преобразование существует (вы пропали без вести броска?)

Как для меня было бы лучше, чтобы указать такой бросок явно:

var x : A = <A>20; 

Является ли это преднамеренный дизайном и требуется в некотором прецеденте или это был пропущен?

ответ

0

Это по дизайну. Числа могут быть назначены для перечислений без броска и наоборот.

2

Это намеренно. Тот факт, что компилятор C# знает, что вы имели в виду («вам не хватает актерского состава?») поучительно - в общем, TypeScript ошибается на стороне гибкости по строгости. Некоторые люди хотят, чтобы приведение было необходимо здесь, чтобы показать, что вы об этом подумали »; предположение в этом случае состоит в том, что вы всегда думаете при программировании и не должны беспокоиться, если что-то более явно ошибочно.

+1

Похоже, что для этого может быть полезно добавить какое-то предупреждение типа TypeScript (которое может быть позже обработано как ошибка, если вы хотите) – gerichhome

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