Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Typescript vs Dart (https://javascript.ru/forum/offtopic/32335-typescript-vs-dart.html)

FINoM 14.10.2012 23:40

Цитата:

Сообщение от tenshi
который Function может принимать и возвращать всё, что угодно или всё же что-то конкретное?

Кстати, функцию можно декорировать так, чтоб валидировать (есть такое слово?) возвращаемое значение.

tenshi 14.10.2012 23:53

> В данном случае всё. Ты имеешь в виду какой-то конкретный тип?

да, там же не любая функция может быть. а, например, функция от 2 целочисленных параметров, возвращающая строку.

> Не въехал в фразу.

function square( obj ){
return obj.getX() * obj.getY()
}

не всё ли равно какой именно класс у obj, если он поддерживает необходимый нам интерфейс:
double function getX();
double function getY();

> Какая разница? Тупо проверять конструктор.

например такая:
alert( new Number( 0 ) ? 1 : 2)
alert( 0 ? 1 : 2)

> Тоже не понял, поясни.

o.s= 1 // тут должно быть исключение или же автоматическое приведение типов?
o.s= new SomeClass // а тут?

tenshi 14.10.2012 23:59

> Проверка конструктора.
> this.w.constructor === SomeClass

то есть даже инстанса субкласса туда поместить будет нельзя?

а почему проверка на инт выглядит иначе?
new Integer( value )
или для Integer, Float и тучи других будет отдельная ветка алгоритма?

> Кстати, функцию можно декорировать так, чтоб валидировать (есть такое слово?) возвращаемое значение.

есть, но ты действительно собираешься декорировать _каждую_ функцию и после каждого вызова проверять тип возвращаемого значения? производительность не беспокоит?

FINoM 14.10.2012 23:59

ХЗ, это всё надо обдумывать. Если захочешь сделаешь.
Цитата:

Сообщение от tenshi
да, там же не любая функция может быть. а, например, функция от 2 целочисленных параметров, возвращающая строку.

Всё-таки ты прав, это получится вырвиглазненько.

FINoM 15.10.2012 00:02

Цитата:

Сообщение от tenshi
то есть даже инстанса субкласса туда поместить будет нельзя?

instanceof?
Цитата:

Сообщение от tenshi
new Integer( value )
или для Integer, Float и тучи других будет отдельная ветка алгоритма?

Не обращай внимания, то сообщение я удалил. Ветка алгоритма будет та же самая, только, кроме проверки инстанса (если выдаст false) нужно проверять на приведение, как и в том сообщении.
Цитата:

Сообщение от tenshi
есть, но ты действительно собираешься декорировать _каждую_ функцию и после каждого вызова проверять тип возвращаемого значения?

Да.
Цитата:

Сообщение от tenshi
производительность не беспокоит?

На сколько дольше будет работать функция, в которой мы тупо добавили проверку на соответствующий тип? Я думаю не на много.

FINoM 15.10.2012 00:05

Цитата:

Сообщение от FINoM
Всё-таки ты прав, это получится вырвиглазненько.

Как-то так:
Interface({
  i: Integer,
  n: String,
  f: {
    gets: [ Float, Float, String ],
    returns: Float
  }
})

Nekromancer 15.10.2012 00:05

Даздравствуют извращения. Сделать язык не типизированным, от этого и медленее, что бы разработчики делали искуственную типизацию и он становился ещё медленее.

tenshi 15.10.2012 00:14

смотря какая проверка. если мы завернём функцию складывающую 2 числа в декоратор, который будет делать parseInt для каждого аргумента и для результата, то обработка массива с помощью Array::reduce( 0, add ) будет занимать не 10мс, а все 50.

tenshi 15.10.2012 00:18

FINoM, а если нужно произвольное число параметров определённого типа начиная со второго?

Nekromancer, зато мы не скованы ограничениями и можем реализовывать типизацию так как ходим) хотим исключение бросам, хотим приводим к нужному типу, хотим все одной функцией всё обрабатываем, хотим реализуем перегрузку методов по типам аргументов))

tenshi 15.10.2012 00:18

весёлые очепятки) пойду поем...


Часовой пояс GMT +3, время: 05:52.