Size: a a a

Angular - русскоговорящее сообщество

2020 January 22

PD

Plomipu Dmitri in Angular - русскоговорящее сообщество
типа параметра. Сорри. Оговорился
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
Plomipu Dmitri
Народ, добрый вечер. У меня диллема с грамотным определением типа интерфейса/класса. Так как TypeScript что и JavaScript не поддерживается перегрузка методов( с разными типами параметром и одним и тем же названием ) как в Java, то полиморфизм или его подобие применить не получится, чтобы определить тип входных параметров( класса/интерфейса, хотя их в JavaScript нет. Только прототипы ). Я попробовал typeof, но он работает только со встроенными типами данных в ES, не кастомными. Для классов и интерфейсов есть instanceof, но по моему опыту в java, точнее то, что я учил, что этот оператор очень медленный так как на перебор всех загруженной инфы о типах из разных метаданных нужно время( Это в java. Как в ES - хз. Но видимо +- та же самая переборка )
> Так как TypeScript что и JavaScript не поддерживается перегрузка методов
чего
> оператор очень медленный
чего
источник

PD

Plomipu Dmitri in Angular - русскоговорящее сообщество
то
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
и во вторых медленный по сравнению с чем
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
но это все не важно, потому что тайпскрипт имеет структурную типизацию
источник

PD

Plomipu Dmitri in Angular - русскоговорящее сообщество
ок, но там понимаете только со встроенными в ES типами эта пародия на перегрузку будет работать "array", "number", "object" и.т.д, а мне нужно как то определить что тип является либо Date либо Moment, а это уже класс и интерфейс соответственно. Вы ведь читали переписку ??
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
Smooth Operator
но это все не важно, потому что тайпскрипт имеет структурную типизацию
а это значит что два интерфейса структурно одинаковых будут тайпскриптом воспринято как любой из них
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
Plomipu Dmitri
ок, но там понимаете только со встроенными в ES типами эта пародия на перегрузку будет работать "array", "number", "object" и.т.д, а мне нужно как то определить что тип является либо Date либо Moment, а это уже класс и интерфейс соответственно. Вы ведь читали переписку ??
> пародия на перегрузку
>> Для того чтобы иметь возможность использовать несколько вариантов подпрограммы с одним и тем же именем, но с разным числом аргументов или другими типами аргументов (то есть с разной сигнатурой, так как список аргументов — часть сигнатуры), вводится перегрузка подпрограмм.
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
Plomipu Dmitri
ок, но там понимаете только со встроенными в ES типами эта пародия на перегрузку будет работать "array", "number", "object" и.т.д, а мне нужно как то определить что тип является либо Date либо Moment, а это уже класс и интерфейс соответственно. Вы ведь читали переписку ??
if (x instanceof Date) {  /* date */  } else {  /* moment */ }
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
или любой другой признак который поможет в определении типа одно или другого
источник

PD

Plomipu Dmitri in Angular - русскоговорящее сообщество
Smooth Operator
или любой другой признак который поможет в определении типа одно или другого
вот я ищу тот признак, что подходит для определения типа класса или интерфейса. Есть даже такая фича как тайп гард, но в доке я видел примеры функции лишь с условием на наличие какого-то поля объекта как
function isAnimal(animal: any): animal is Animal{
  return animal.swim !== undefined;
}
источник

PD

Plomipu Dmitri in Angular - русскоговорящее сообщество
но мне так не подходит
источник

PD

Plomipu Dmitri in Angular - русскоговорящее сообщество
Smooth Operator
if (x instanceof Date) {  /* date */  } else {  /* moment */ }
а вы уверены, что instanceof лучше тогда будет ?? Так как про него пророчат разные дэвы, чтобы мы этот оператор избегали в коде
источник

🧤K

🧤 Andrei Kapytau in Angular - русскоговорящее сообщество
Plomipu Dmitri
а вы уверены, что instanceof лучше тогда будет ?? Так как про него пророчат разные дэвы, чтобы мы этот оператор избегали в коде
Это джаваскрипт, здесь либо так либо никак ))
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
Plomipu Dmitri
а вы уверены, что instanceof лучше тогда будет ?? Так как про него пророчат разные дэвы, чтобы мы этот оператор избегали в коде
лучше чем что
источник

YS

Yuri Stepanov in Angular - русскоговорящее сообщество
Вставляйте все в момент и не парьтесь ;)
источник

PD

Plomipu Dmitri in Angular - русскоговорящее сообщество
Smooth Operator
лучше чем что
лучше чем остальные приведённые вами выше варианты и лучше чем использовать тайп гард ??
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
в тайп гарде что ты будешь использовать для определения Date?)
источник

PD

Plomipu Dmitri in Angular - русскоговорящее сообщество
Smooth Operator
в тайп гарде что ты будешь использовать для определения Date?)
если честно: то я хз в этот раз (((
источник