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

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

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

9 ответов

20 просмотров

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) } }

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта