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

Привет. Можно ли в ТС сделать что-то наподобии Растового trait HasName

{
const NAME: &str;
}
Т.е. ассоциировать с типом компайл-тайм строку? Пока я придумал вот такое:
export interface HasName<N extends string> {}
export type GetName<T> = T extends HasName<infer N> ? N : never
Но вытащить string из T не получается

10 ответов

7 просмотров

Привет. Я вот так делаю: export type HasName<T extends object> = T & {name: string}

Andrey-Vlasov Автор вопроса

Мне нужно, чтобы возможно было составить функцию с типом <T extends HasName>() => string У тебя ведь тип HasName значит "все представители HasName<T> имеют поле name типа string — это другое. Тут у каждого представителя будет свой name. А мне нужно, чтобы у типа был name

Я правильно понимаю, тебе нужно в рантайме получить строку, ассоциированную с типом?

Andrey-Vlasov Автор вопроса

Получить в компайл-тайме, использовать в рантайме

Т.к. типов в рантайме не существует и ты хочешь использовать эту строку, её придётся хранить в каком-то свойстве объекта.

Andrey-Vlasov Автор вопроса

В Расте тоже типов в рантайме нет. Эта строка - свойство типа. Ей не нужно быть свойством объекта

TS перед исполнением преобразуется в JS, все типы при этом отбрасываются => этой строки не окажется в коде, если её не положить в свойство.

Andrey-Vlasov Автор вопроса

Почему бы её не инлайнить/записывать в глобальную константу?

Компилятор TS этого не сделает, поэтому какой бы механизм ассоциации строки с объектами ты ни выбрал, это придётся делать руками.

Andrey-Vlasov Автор вопроса

Грустно

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

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

Скажите, можно ли как-то "переместить" динамический массив из одной переменной в другую? Скажем, переместить из TList<> в TArray<>. Именно переместить, а не скопировать. Если ...
Eugene Krasnikov (ᴊɪɴ x)
37
комрады, че-та лыжы не едут var tmpFont: TFont; begin tmpFont:= TFont.Create; try case rgFontColor.ItemIndex of 0: tmpFont.Color:= clWindowText; 1: tmpFo...
Ed Doc
34
Вот еще криповенькая штука. uMain.pas(517,3) Warning: Case statement does not handle all possible cases И ЧО? 😂
Александр (Rouse_) Багель
15
.model small .stack 100h .data a db 'Hello, World!', '$' ; исходная строка b db 20 dup(?) ; строка b с запасом на максимальную длину .code main: ...
Алексей -man
3
вопрос, кого посмотреть в ютубе или где почитать про указатели чтобы раз и навсегда запомнить зачем они нужны и как правильно ими пользоваться? поделитесь хорошими ресурсами, ...
-
14
М-да. Почему бы просто со stringlist не работать?
Michael Longneck
23
Интересно, нет ли какого-то способа получить из dll не адрес самой метки, а адрес со смещением?
The Bird of Hermes
54
Редактор листа Excel, по сути двумерный массив ячеек. Ячейка - это экземпляр класса, у нее всякие свойства, методы. Проблема в том, что количество используемых строк и колоно...
Sergey Bodrov
2
Is there a digital way to cut the electricity from a usb in linux? It sounds weird, but it's exactly what I need to do. I tried to simulate the unplug/replug but is not the ...
Eduard Rivas
15
Решаемо? У тебя есть софт собирающийся без хинтов ворнингов?
Александр (Rouse_) Багель
9
Карта сайта