Вопросы по теме 'conditional-types'
Как набрать объект с известными и неизвестными ключами в TypeScript
Я ищу способ создать типы TypeScript для следующего объекта, который имеет два известных ключа и один неизвестный ключ с известным типом:
interface ComboObject {
known: boolean
field: number
[U: string]: string
}
const comboObject:...
13491 просмотров
schedule
27.04.2022
TypeScript - проверка типа перечисления для условных типов?
У меня есть успокаивающие службы, которые принимают значения перечисления либо как число, либо как строку, но всегда возвращают только число. Есть ли способ их набрать?
Вот что я вроде как хочу, но это синтаксически неверно:
enum Features {...
7537 просмотров
schedule
10.01.2023
Typescript: получение правильного типа вывода при использовании условно сопоставленных ключей
Я пытаюсь использовать типы с условным отображением , чтобы получить только разрешающие ключи объекта определенного типа в качестве параметра функции.
Однако я сталкиваюсь с проблемой, заключающейся в том, что при этом не определяется правильный...
634 просмотров
schedule
05.09.2022
Сопоставление значений перечисления с типами
Эта проблема
Предположим, у меня есть такой код:
// Events we might receive:
enum EventType { PlaySong, SeekTo, StopSong };
// Callbacks we would handle them with:
type PlaySongCallback = (name: string) => void;
type SeekToCallback =...
618 просмотров
schedule
24.06.2023
Попытка использовать условные типы Typescript, чтобы сузить возможные комбинации значений, которые можно ожидать
Я пытаюсь сказать TypeScript, что тип значения в первом параметре функции определяет тип, который может иметь второй. По сути, я хочу сузить возможные комбинации типов.
В конкретном примере я хочу, чтобы 2-й параметр был null , если параметр 1sr...
1243 просмотров
schedule
02.07.2023
Напишите функцию, которая использует типы поиска в дженериках.
Я хочу написать функцию, которая делает три вещи:
работает с универсальным типом T
принимает ключ: K из T, где T[K] должен быть логическим значением
присваивает значение T[K]
Я следую этому руководству , которое подсказывает при такой...
270 просмотров
schedule
22.09.2022
Зачем нужно ключевое слово infer в Typescript?
Почему ребята из Typescript создали ключевое слово infer ? Согласно документам , это пример того, как вы будете его использовать:
type ReturnType<T> = T extends (...args: any[]) => infer R ? R : any;
Я не понимаю, зачем это...
19982 просмотров
schedule
05.08.2022
TypeScript не может сузить тип
(Если вы найдете имя получше, дайте мне знать)
У меня есть функция, которая получает два аргумента: задание и сотрудник. Сотрудник не является обязательным: если работа запланирована, сотрудник будет там, в противном случае он не нужен.
type...
38 просмотров
schedule
07.06.2022
Почему тип Typescript, условный для `T extends undefined`, с экземпляром T, созданным с помощью` boolean`, разрешает T в `never`?
Следующий код пытается определить тип функции, которая вызывается без аргументов, если ее общий аргумент равен undefined , но с 1 аргументом для любого другого типа аргумента. (Возможно, есть более эффективные способы сделать это, ссылки на которые...
1700 просмотров
schedule
03.04.2022
Как добавить охранников расширений к условным типам? Или эквивалент
Скажем, у меня есть класс с универсальным параметром. У него есть условные типы для некоторых свойств класса. Эти условные типы зависят от универсального параметра, являющегося одним из двух возможных значений перечисления. В конструкторе я передаю...
193 просмотров
schedule
03.07.2022
Как вывод типов работает с типами объединения (+ условными типами и универсальными шаблонами) в TypeScript?
Я разрабатываю игру на Angular и пытаюсь отделить представление от игровой логики. Для этого я создал отдельную UiController службу для обработки взаимодействия с пользователем и представления. Службы, связанные с игровой логикой, отправляют...
26 просмотров
schedule
13.04.2023
Определить сигнатуру функции машинописного текста из объединения типов
Я хочу определить тип функции из объединения типов:
type MyEvent =
| { type: 'hello', payload: {} }
| { type: 'start', payload: { date: Date } }
type On<Event> = Event extends { type: infer EventType, payload: infer EventPayload }
?...
36 просмотров
schedule
04.12.2022
Как удалить ключ / свойство из типа функции
Как удалить name из функции следующего типа:
type Func = {
(): number
name: string
}
Omit<Func, 'name'> приведет к never .
Playground ссылка
38 просмотров
schedule
20.06.2022
Ограничить один общий параметр Typescript на основе свойств другого?
Я пытаюсь написать функцию, которая принимает объект и (строковый) ключ, а затем оперирует свойством объекта. Это легко:
function f<T extends any, K extends keyof T>(obj: T, key: K) {
const prop = obj[key]; // prop is typed as T[K]
}
Я...
280 просмотров
schedule
30.07.2022
Тип возвращаемого значения метода класса на основе типа параметра
У меня есть функция, которая принимает что угодно в качестве параметра, но если она получает function (с прототипом), она должна вернуть экземпляр этой функции (или класса, поскольку они являются функциями). Если нет, он может искать что-либо,...
87 просмотров
schedule
16.07.2023
Необязательность аргумента дочерней функции одной функции зависит от необязательности аргумента другой функции.
Я создаю пример функции, которая принимает функцию fn1 в качестве аргумента и возвращает функцию fn2;
type Values<T> = (values: T) => Promise<void>; //function with argument
type NoValues = () => Promise<void>;...
33 просмотров
schedule
10.04.2022
Условный тип TypeScript и имена свойств вычисляемого объекта
У меня возникли проблемы с использованием условного типа в сочетании с именем свойства вычисляемого объекта. В основном я вставляю строки в базу данных на основе входной строки. Затем я набираю возвращаемый объект на основе этой входной строки....
145 просмотров
schedule
20.05.2022
Почему в TypeScript 'T никогда не расширяется? never: keyof T` отличаются от `keyof T '?
Рассмотрим следующие определения:
type OtherKeyOf<T> = T extends never ? never : keyof T;
type OtherKeyOf2<T> = keyof T;
Я ожидал, что OtherKeyOf и OtherKeyOf2 будут действовать точно так же, как я ожидал, что эти две функции...
9 просмотров
schedule
22.03.2024