Внедрить тип класса аргумента функции в javascript (для безопасности типов и для оптимизации браузера JIT / компилятора) - PullRequest
1 голос
/ 28 октября 2019

Большинство библиотек JavaScript, которые пытаются достичь высокопроизводительной математики (например, для графического или физического моделирования), используют подобные приемы, чтобы убедиться, что компилятор знает, что переменные имеют числовой тип:

    function Vector3( x, y, z ) {
        this.x = x || 0;
        this.y = y || 0;
        this.z = z || 0;
    }

    function Vector3( x, y, z ) {
        this.x = x + 0.0;
        this.y = y + 0.0;
        this.z = z + 0.0;
    }

Имеет ли смысл продвигать это на следующем уровне и обеспечивать тип не только примитивов, но и классов? Например, что-то вроде

function Sphere( pos, R ) {
    let junk = 0.0 + pos.x + pos.y + pos.z;
    this.pos = pos;
    this.R   = R + 0.0;
}

function Sphere( pos, R ) {
     if ( pos instanceof Vector3 ){
          this.pos = pos;
     }else{
          this.pos = Vector3(pos);
     }
     this.R   = R + 0.0;
}

Вопросы:

  1. Имеет ли это смысл с точки зрения предварительного исполнения?
  2. Разве instanceof не слишком медленный?
  3. Можно ли сделать больше ники, с меньшим количеством шаблонов?

на TypeScript и т. Д.

Я знаю, что есть такие вещи, как TypeScript , но они требуют установки определенной среды, и, насколько я знаю, они не поддерживаются напрямую веб-браузерами, а типанотация не помогает оптимизировать js-engine в браузере. (Может я не прав - буду рад если вы меня поправите)

...