Size: a a a

TypeScript — русскоговорящее сообщество

2020 March 12

AV

Anton Vlasov in TypeScript — русскоговорящее сообщество
Возможно я хочу невозможного, но вдруг есть способ:
У меня есть папка, в которой лежат файлы с разными названиями. Я хочу получить тип, который состоит из названий файлов в этой папке

юзкейс: это папка с иконками, и я хочу получить автокомплит, когда обращаюсь к ней через какой-нибудь <Icon name=«filename-with-autocomplete-here»/>
источник

u

uid in TypeScript — русскоговорящее сообщество
Nikita Fedorov
напомните как делать тайпгвард вида
type T = { isDenied: true } | { isApproved: true }
function f(x: T) {
  if (x.isDenied) {
   // x is { isDenied: true }
  }
}
Здесь можно использовать проверку наличия свойства: if ('isDenied' in x). Либо добавить isDenied: false во второй объект.
источник

u

uid in TypeScript — русскоговорящее сообщество
Anton Vlasov
Возможно я хочу невозможного, но вдруг есть способ:
У меня есть папка, в которой лежат файлы с разными названиями. Я хочу получить тип, который состоит из названий файлов в этой папке

юзкейс: это папка с иконками, и я хочу получить автокомплит, когда обращаюсь к ней через какой-нибудь <Icon name=«filename-with-autocomplete-here»/>
Так составить тип TS не может, кажется. Можно добавить в директорию с иконками индексный файл, в котором будут собираться иконки и тип имени иконки, например: play. Чтобы после этого заработал автокомплит на значение атрибута в JSX, нужно, возможно, донастроить IDE (обычно работает только для названия атрибута).
источник

AV

Anton Vlasov in TypeScript — русскоговорящее сообщество
uid
Так составить тип TS не может, кажется. Можно добавить в директорию с иконками индексный файл, в котором будут собираться иконки и тип имени иконки, например: play. Чтобы после этого заработал автокомплит на значение атрибута в JSX, нужно, возможно, донастроить IDE (обычно работает только для названия атрибута).
Понял, спасибо большое
источник

МХ

Максим Храмцов in TypeScript — русскоговорящее сообщество
Anton Vlasov
Возможно я хочу невозможного, но вдруг есть способ:
У меня есть папка, в которой лежат файлы с разными названиями. Я хочу получить тип, который состоит из названий файлов в этой папке

юзкейс: это папка с иконками, и я хочу получить автокомплит, когда обращаюсь к ней через какой-нибудь <Icon name=«filename-with-autocomplete-here»/>
можно плагин для ts lang service написать, но я так понял он только автокомплит будет уметь
источник

OH

Oleg Hruschev in TypeScript — русскоговорящее сообщество
Есть 2 интерфейса: {email: string; message: string} и {email?: string; message?: string} Можно как-то сделать один?
источник

SV

Sergey Vakhramov in TypeScript — русскоговорящее сообщество
Я даже не знаю, что получится
источник

SK

Sergei Kobzev in TypeScript — русскоговорящее сообщество
Oleg Hruschev
Есть 2 интерфейса: {email: string; message: string} и {email?: string; message?: string} Можно как-то сделать один?
мб Partial поможет, но использовать прямо один это вряд ли
источник

J

Jack in TypeScript — русскоговорящее сообщество
Дорогие друзья, в нашем боте проходит акция! 🌟

Лучший магазин Qiwi кошельков с балансом 🐥

Попробуй и начни зарабатывать с нами!


Наш бот в Telegram:
👉 https://t.me/qiwishoppobot?=start457800643
источник

YD

Yakov Dalinchuk in TypeScript — русскоговорящее сообщество
Ребята, всем привет. Не могу описать тип для функции. Она принимает объект и вторым аргументом массив с названиями пропсов. Достает значения свойств и соединяет в строку. Я написал следующий код:
type a = {
 a: string
 A: string
}

type b = {
 b: string
 B: string
}

type All = a | b

function join<TToken>(
 token: TToken,
 props: (keyof TToken)[]
): string {
 return props.map(prop => token[prop]).join('');
}

// Ниже окей, но нужно, что бы принимало только тип All в качестве первого аргумента
join({ a: 'aaa', b: 'bbb' }, ['a', 'b']); // 'aaabbb'
источник

YD

Yakov Dalinchuk in TypeScript — русскоговорящее сообщество
Эта функция сейчас может работать с любым объектом. Но нужно что бы работало только со определенными.
источник

YD

Yakov Dalinchuk in TypeScript — русскоговорящее сообщество
Помогите, пож-та.
источник

NT

Nikita Torchinskiy in TypeScript — русскоговорящее сообщество
Yakov Dalinchuk
Эта функция сейчас может работать с любым объектом. Но нужно что бы работало только со определенными.
<TToken extends All> должно помочь
источник

YD

Yakov Dalinchuk in TypeScript — русскоговорящее сообщество
Nikita Torchinskiy
<TToken extends All> должно помочь
Так оно и есть, но мне нужно именно a или именно b
источник

YD

Yakov Dalinchuk in TypeScript — русскоговорящее сообщество
а тут как бы расширять можно…
источник

NT

Nikita Torchinskiy in TypeScript — русскоговорящее сообщество
Yakov Dalinchuk
а тут как бы расширять можно…
Можно сделать ограниченным сам массив:
(
 token: TToken,
 props: (TToken extends b ? keyof b : keyof a)[]
)
источник

YD

Yakov Dalinchuk in TypeScript — русскоговорящее сообщество
Nikita Torchinskiy
Можно сделать ограниченным сам массив:
(
 token: TToken,
 props: (TToken extends b ? keyof b : keyof a)[]
)
хорошее предложение, но у меня в действительности a | b | c | d | e и т.д. Т.е. большое кол-во типов
источник

M

MaxGraey in TypeScript — русскоговорящее сообщество
Тебе нужно эмулировать ADT. для этого каждому типу нужно добавить какой нибудь тэг например:

type a = {
   kind: ‘a’;
   a: string;
   A: string;
}

type b = {
   kind: ‘b’;
   b: string;
   B: string;
}
источник

YD

Yakov Dalinchuk in TypeScript — русскоговорящее сообщество
MaxGraey
Тебе нужно эмулировать ADT. для этого каждому типу нужно добавить какой нибудь тэг например:

type a = {
   kind: ‘a’;
   a: string;
   A: string;
}

type b = {
   kind: ‘b’;
   b: string;
   B: string;
}
а дальше что?
источник

YD

Yakov Dalinchuk in TypeScript — русскоговорящее сообщество
у меня так то и есть, по случайному стечению обстоятельств
источник