Плюс - стилистическое оформление.
Мало кто знает про #pragma region
В одном из вопросов пару лет назад он вполне спокойно назвал Джона Кармака идиотом на основании того что тот относит себя к const nazi.
я просто сагрился
Это уже ограничения JS и TS тут не причем.
Typescript поддерживает перегрузку функций, а реализация перегрузки - это уже детали.
Не забывайте что Typescript это Транспайлер, а не Компилятор.
тип данных получаемых через сеть не может быть гарантирован
Если в нем будет неявный кастинг, то какой от него толк? Чем TS тогда будет отличаться от JS?
[перегрузка] эмм... поддерживает
function add(x: string, y: string): string{ // Error: duplicate function implementation
return [x, y].join('+');
}
function add(x: number, y: number): number{ // Error: duplicate function implementation
return x + y;
}
[неявный кастинг] тоже поддерживает
as number
. Да и вообще он странный, ибо практической пользы от такого неуправляемого кастинга минимум.Object.prototype.valueOf
и Object.prototype.toString
. Крайнее работает годно и прогнозируемо, а вот с valueOf
траблы:const MyCustomType = (function () {
function MyCustomType(n) {
this._data = n;
}
MyCustomType.prototype.valueOf = function () {
return this._data;
};
return MyCustomType;
}());
const obj = new MyCustomType(3);
console.log("Value is " + (obj + 2)); // OK
class MyCustomType {
public constructor(n: number) {
this._data = n;
}
public valueOf(): number { // nobody cares )"=
return this._data;
}
private _data: number;
}
const obj = new MyCustomType(3);
// error TS2365: Operator '+' cannot be applied to types 'MyCustomType' and '2'.
console.log(`Value is ${obj + 2}`);
Тестить хотя бы иногда на английском, немецком и испанском.
Лучше избегать абсолютных значений размеров, а если нельзя - эллипсис и тултип с полным вордингом.
Ни в коем случае, этот рак имеет свойство разрастаться со временем. Лучше переосмысливать дизайн так, чтобы он был универсален.
ЗЫ Самое интересное начинается, когда речь заходит о RTL-языках (арабский, иврит и т.п.)