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

Как правильно задать перегрузку функции через интерфейс? https://www.typescriptlang.org/play?#code/JYOwLgpgTgZghgYwgAgPIDdoBsD2cAmE+APACoB8yA3gFDLIAUcAXMqQJSukDcdjLbADTIARl05teAXxo0EOEAGcwyHJii4CRVhmx5CJEAFcAtiOiUAvMhhGQCMMAWr1mg02Ej21PvWAxGEWRLEOQ7QhhQIm9aeji4qAgwIygQZDheeJlfZETk1PTkAGpRaV45BWVciEUjLDAARmCXPS18Bgb2CqUVRNr6gCZmtVb3BuEBrvke6v6wAGZh130iDonhefYgA аргументы все

равно приводятся в any

15 ответов

4 просмотра

через интерфейс ты можешь описывать функции, которых в ts нет. хакать

Maksim- Автор вопроса

что значит нет в ts? спасибо за пример, но он, получается, не типобезопасен. игноры, приведения к типу. можно обойти их?

не типобезопасен, потому что я имитирую код, которого нет в тс. там может быть const func = window.$ as Func так же декларации типов для библиотек — код библиотек написан на js, рантайм весь на js. а для интеропа с ts описаны интерфейсы. самих функций (их реализаций) нет в ts

если ты хочешь написать перегрузку (и сигнатуру, и реализацию) на ts, то только способом с function...

Maksim- Автор вопроса

а, то есть так нельзя https://bit.ly/3ceGL2p ? и вот этот интерфейс в библиотеке деклараций https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/styled-components/index.d.ts#L292 описывает код только для js (всмысле я не смогу сделать так в ts)?

вот этот интерфейс в библиотеке деклараций нужен только для того, чтобы рассказать тайпскрипту, как работает функция, написанная на джаваскрипте

и это максимально не-типобезопасно

Maksim- Автор вопроса

вопрос про декларации типов для библиотеки. их пишут вручную или генерируют (в случае, если библиотека написана на ts)?

если библиотека написана на языке со статической типизацией — генерится. иначе только руками

Maksim- Автор вопроса

а есть где почитать про бестпрактис, ну, кроме declaration: true. собственно работаю с библиотекой и автоматическая декларация не устраивает

Maksim- Автор вопроса

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

йеп

Maksim- Автор вопроса

спасибо

Maksim- Автор вопроса

так, возможно, я торможу, но снова о типизации функций и использовании сторонних декалараций вот, демо https://codesandbox.io/s/custom-styled-0t4zh?file=/src/common/customStyled.ts и опять any типы в аргументах функции разве они не должны были выводится из ThemedCssFunction<DefaultTheme>?

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

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

кому не сложно распишите пожалуйста для какой цели тут вот эти скобки и в них пихается указатель?
Михаил Helper
11
Комрады, посоветуйте, куда копать? Стал прикручивать кастомизацию тем. В OnShow главной главной формы пытаюсь загрузить из файла настроек и применить тему (на скрине, как долж...
Ed Doc
13
Такс, блин, таки кто-то знает, каким образом работают макросы stdin/stdout/stderr? Я влез в stdio.h, там определения нет, отладил через асмокод - вызывается функция со странны...
The Bird of Hermes
18
OnShow один раз вызывается? или возможен Hide?
Iluha Companets
14
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
Всем привет, на линуксе лучше на fasm или nasm учиться писать для начала ?
meszjol
14
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
Карта сайта