Size: a a a

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

2020 April 07

EG

Egor Gorbachev in TypeScript — русскоговорящее сообщество
Дмитрий Беляев
может подскажет кто:
есть типы вроде
type T0 = { tag: 0; /* ... */ };
type T1 = { tag: 1; /* ... */ };
type T2 = { tag: 2; /* ... */ };
и есть их юнион тип:
type T = T0 | T1 | T2;
можно ли как то из T вывести тип TX чтоб TX<0> выдавало T0, TX<1> - T1  и тд?
type TX<Tag extends T['tag']> = /* что здесь написать? */
Через infer ссылка
источник

AB

Artyom Burkan in TypeScript — русскоговорящее сообщество
function mult(number) {
 return (function() {
   return function(nextNumber) {
     if (!nextNumber) return number;
     return mult(number * nextNumber);
   }
 }());
}

console.log('mult result: ', mult(1)(2)(3)());


Как это затипизировать?
источник

EG

Egor Gorbachev in TypeScript — русскоговорящее сообщество
Artyom Burkan
function mult(number) {
 return (function() {
   return function(nextNumber) {
     if (!nextNumber) return number;
     return mult(number * nextNumber);
   }
 }());
}

console.log('mult result: ', mult(1)(2)(3)());


Как это затипизировать?
А зачем, ты этот код на продакшене будешь использовать? В TS есть рекурсивные типы
источник

ДБ

Дмитрий Беляев in TypeScript — русскоговорящее сообщество
это не то, тоже самое можно было через T['tag'] получить
мне же нужно сам T0
источник

AB

Artyom Burkan in TypeScript — русскоговорящее сообщество
Egor Gorbachev
А зачем, ты этот код на продакшене будешь использовать? В TS есть рекурсивные типы
Это упрощённый вариант необходимго для меня вызова, который я не могу затипизировать. Можно ссылку где глянуть?
источник

ДБ

Дмитрий Беляев in TypeScript — русскоговорящее сообщество
грубо говоря у меня есть функция:
function fn<Tag extends T['tag']>(tag: Tag, arg: TX<Tag>);

я вызываю ее
const a0: T0 = {/* ... */};
fn(0, a0);

const a1: T1 = {/* ... */};
fn(1, a1);

и это должно быть валидным
источник

ДБ

Дмитрий Беляев in TypeScript — русскоговорящее сообщество
кароче, я из юниона хочу вытащить подтип, зная конкретный тип общего признака (поля tag, которое присутствует в каждом подтипе, и имеет литеральный тип, в каждлом подтипе свой)
источник

ДБ

Дмитрий Беляев in TypeScript — русскоговорящее сообщество
источник

m

mg901 in TypeScript — русскоговорящее сообщество
Подскажите плиз, куда класть enum? файл с типами или с константами?
источник

PD

Petro Deriy in TypeScript — русскоговорящее сообщество
mg901
Подскажите плиз, куда класть enum? файл с типами или с константами?
как нащет класть 1 export enum в свой файл
источник

PD

Petro Deriy in TypeScript — русскоговорящее сообщество
типа 1 export per file
источник
2020 April 08

L

Lesha in TypeScript — русскоговорящее сообщество
Всем привет. А можно ли как-то типизировать enum?
Так как нельзя использовать значения enum, объявленного в сигнатуре, мне пришлось в сигнатуре определить лишь список возможных значений, а сам enum вынести в модуль.
Чтобы не было расхождения значений, мне нужно типизировать вынесенный enum
источник

a

arts in TypeScript — русскоговорящее сообщество
Lesha
Всем привет. А можно ли как-то типизировать enum?
Так как нельзя использовать значения enum, объявленного в сигнатуре, мне пришлось в сигнатуре определить лишь список возможных значений, а сам enum вынести в модуль.
Чтобы не было расхождения значений, мне нужно типизировать вынесенный enum
ts сам неплохо справляется с выводом типов для enum
источник

a

arts in TypeScript — русскоговорящее сообщество
Да и в принципе, enum сам себе тип
источник

A

Alex CherryTea in TypeScript — русскоговорящее сообщество
источник

A

Alex CherryTea in TypeScript — русскоговорящее сообщество
источник

MS

Maxim Sosnov in TypeScript — русскоговорящее сообщество
Тайпскрипт не залазит внутрь функции проверять что она делает
Только смотрит сигнатуру
Там есть синтаксис специальный для того что ты хочешь ‘arg is SomeType’
источник

A

Alex CherryTea in TypeScript — русскоговорящее сообщество
Maxim Sosnov
Тайпскрипт не залазит внутрь функции проверять что она делает
Только смотрит сигнатуру
Там есть синтаксис специальный для того что ты хочешь ‘arg is SomeType’
источник

C

Candies in TypeScript — русскоговорящее сообщество
Всем привет! Можно ли указать eslint или typescript-eslint, что модульные системы недоступны, чтобы no-unused-vars не кидала варнинг, если переменная/функция вызывается в другом файле? На проекте не могу использовать импорты, но не хотелось бы выключать это правило. На скрине минимальный конфиг, чтобы понять, о чём идёт речь. Заранее спасибо
источник

C

Candies in TypeScript — русскоговорящее сообщество
источник