Понравилось как они интерфейсы с обьектами связали.
Добавили только то что нехватало. классы + (классика всегда в цене :D ) интерфейсы + (контроль над согласование множества обьектов, очень не плохо ) статическая типизация+ (как добавка к динамической то что надо) отсутствие именованных параметров в функциях - (очень удобно, но нету :( ) необходимости предварительной компиляции --- (была бы удобнее компиляция в браузере, хотябы как опция) |
Цитата:
Я наверное плохо сформулировал вопрос. Как вы относитесь к статической типизации и почему? Хотя если вы сначала видео хотите посмотреть, я конечно подожду... |
какие-то ответы неаргументированные и/или субъективные (мне нравится, что...)
|
x-yuri,
в некоторых местах она очень нужна, особенно на больших проектах. К гвардам однозначно положительно отнушусь, на счёт остольного пока трудно сказать. |
всегда удобно иметь набор инструментов на выбор.
если статическая типизация, доступна вместе с динамической то это идеальное сочетание на мой взгляд. Очень полюбил C# за эту возможность в своё время, именно там впервые начал пользоваться динамическими переменными. Автор typeScript и автор С#, pascal, delphi это один и тот же человек. Только строгая типизация, более перспективна в плане производительности, однако подкидывает и немало гемороя. к примеру
function hello(d){
console.log(d);
}
hello(1);
hello("привет");
уже работать небудет Пришлось бы вводить в язык перегрузку функций и получилось бы что то вроде.
function hello(d:int){
console.log(d);
}
function hello(d:string){
console.log(d);
}
hello(1);
hello("привет");
нифига некамельфо. вот поэтому я и говорю что статическая + динамическая - это гуд. А только у статической и только динамической немало недостатков. |
DjDiablo,
Приведение типов перед передачей в функцию не решит проблему? |
Цитата:
Цитата:
Object.defineProperty( Object.prototype, 'defineInteger', {
value: function( key, value ) {
Object.defineProperty( this, '_' + key, {
value: parseInt( value ) || 0,
enumerable: false,
writable: true
});
Object.defineProperty( this, key, {
get: function() {
return this[ '_' + key ];
},
set: function( value ) {
var parsed = parseInt( value );
if( value !== parsed ) {
throw Error( 'Key "'+key+'" must be an integer, fuck off, motherfucker' );
} else {
this[ '_' + key ] = value;
}
}
});
},
enumerable: false
});
o = {};
o.defineInteger( 'myInt', 333 );
console.log( o.myInt );
o.myInt = 444;
console.log( o.myInt );
o.myInt = 'valera';
Нужно только немного подождать сметри ИЕ8. Производительность здесь, конечно, херовая, но, мне кажется, задачи, где реально требуется статическая типизация с высокой производительностью, настолько редки, что ими можно пренебречь. Если уж хотите быстроты, параллельте приложение с помощью воркеров. Еще раз попеарю небольшую поделку: https://github.com/finom/Functions/t...r/InlineWorker |
Цитата:
Цитата:
А вот промо-сайт автомобиля, игра в канвасе, бизнес приложения, приложения на мобильные платформы, metro-приложения - предьявляют совсем иной набор требований. Таких заказов меньше, но они есть, и их число будет только расти. Я думаю что ориентируясь на лузеров, можно стать только лузером. |
а мне вот больше нравится статическая типизация с автоматическим приведением типов. например, на пхп я её эмулирую так:
function getTitle( $dom ){
so_dom::ensure( $dom );
return (string) $dom->select(' / html / title ');
}
в эту функцию можно передать строку, структуру из массивов, инстанс so_file или so_dom.. и это будет работать правильно. приводить типы вручную перед вызовом функции - слишком много копипасты получится. делать семейство функций на каждый тип - тоже. |
Входная переменная $dom - у тебя нетипизированная, естественно ты можешь передать в функцию что угодно
|
| Часовой пояс GMT +3, время: 13:34. |