169 похожих чатов

Парни, кто в курсе как поправить? https://www.typescriptlang.org/play?#code/MYGwhgzhAEqRBBaBvAUNWB7AdhALgE4CuwemBAFGAQOYBc0Y2AngDSO0BMDTzAlCgC+qdNHxg8AS2CwCAUwlyAPABVocgB5452ACYw4UBAD4KAOguYADnggMAwjnzFS5AArUwAWznaCEJTxmKzlMADNoFWMBNAwMeTwiAmxobDkAd2g8AAtJCHNLGwg+AG5RYWFUIA Нужно, чтобы аргументы конструктора были

взяты именно из переданного в create дженерика, а не напрямую из classA.

9 ответов

5 просмотров

extend от самого себя?🤨

ᅠ ᅠ- Автор вопроса
Иван
extend от самого себя?🤨

Я просто упростил по максимуму, но суть осталась. Дело в том, что classA может расширять другие классы и те другие классы могут вызывать статический метод create. К примеру, classB.create(...args). Нужно, чтобы сработал type inference для метода create и в него можно было бы передавать все те же самые аргументы, которые и в сам конструктор.

ᅠ ᅠ
Я просто упростил по максимуму, но суть осталась. ...

Все равно не очень понятно :) Можно пример как это должно работать? Сейчас получается рекурсивный extend + метод ведь статический, значит нужный класс нужно передавать самому, либо убрать static

ᅠ ᅠ- Автор вопроса
Иван
Все равно не очень понятно :) Можно пример как это...

Не нужно передавать нужный класс самому. В статических методах работает this (ссылка на класс).

ᅠ ᅠ- Автор вопроса
Иван
Все равно не очень понятно :) Можно пример как это...

В общем, нужно сделать так, чтобы в create передовалось все тоже самое, что и в конструктор класса.

ᅠ ᅠ
В общем, нужно сделать так, чтобы в create передов...

https://www.typescriptlang.org/play?#code/C4TwDgpgBAwg9gOwM7AE4FcDGw6oIKoDmSAPACoB8UAvFGVBAB7AQIAmSUCEA7lABQA6YQEMiSAFxQAlggBmEVFACqAShpURCEFAD8KqFO4A3RQCgzmADYikna7aR4oAbzNQomRCgzZc-MUIARiktEAAaKECAJlDtdRcAXwsPFBFgaUxPVAh0iCFRcSl4ZDQsHHxxElBIODlPGzs8CgT3Dygc4HRUBC5eKGAAC2kkAsFApFU25OTLb2ABiBQaBsc8QUwcvP4AZkiAFimgA

ᅠ ᅠ- Автор вопроса
Иван
https://www.typescriptlang.org/play?#code/C4TwDgpg...

Эмм... Не совсем то) нужно, чтобы через дженерик передлвался classA, а не напрямую. Дело в том, что вместо classA может быть classB, который в конструкторе будет ещё дополнительные опции принимать.

ᅠ ᅠ
Эмм... Не совсем то) нужно, чтобы через дженерик ...

Можно пример? Есть ли тогда вообще смысл в такой задаче? Не легче тогда сделать какой-то абстрактный класс Creatable

class classA { constructor(arg: any, arg2: any) {} static create<P extends any[], T extends classA>(this: new (...args: P) => T, ...opts: P) { return new this(...opts) } }

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Заметил в ghci 9.4.8: > :t (<*>) @((->)_) (<*>) @((->)_) :: (w -> (a -> b)) -> (w -> a) -> w -> b Разве не должно (w -> (a -> b)) быть записано как (w -> a -> b)? Это баг, ил...
Михаил
13
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Any electron dev here?
Sayanth Tezro
12
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
так это может кто что знает или использует что-то как макбук только не макбук? на 13…14 дюймов
Michael
9
Карта сайта