Вопросы по теме 'typescript-generics'

Ограничение универсальных типов одним из нескольких классов в Typescript
Как в Typescript ограничить универсальный тип одним из нескольких классов во время компиляции? Например, как вы реализуете этот псевдокод? class VariablyTyped<T has one of types A or B or C> { method(hasOneType: T) { if T has...
4828 просмотров

Сгенерировать тип для частичной функции
У меня есть функция с объявленным типом. Я планирую использовать частичную версию этой функции. Но мне нужно сначала объявить переменную для частичной версии. Я могу скопировать подпись, опустив первый параметр. Пока он работает и делает проверки...
534 просмотров

Проблема с типами объединения и условными типами
У меня есть следующие объявления типов: class MyGeneric<T> { } type ReplaceType<T> = T extends Function ? T : MyGeneric<T> | T; ReplaceType<T> должен преобразоваться в MyGeneric<T> | T или T , в зависимости...
249 просмотров

TypeScript: эквивалент ограничения общего типа C # для расширения класса?
Я пытаюсь написать защищенный абстрактный класс, который может принимать тип подкласса в качестве аргумента типа в сигнатуре метода конструктора суперкласса. То, что я ищу, похоже на ограничение общего типа C # (ключевое слово where ), так что я...
920 просмотров

Как получить доступ к свойствам универсального объекта по индексу в TypeScript?
У меня есть следующая функция, которая проходит через все атрибуты объекта и преобразует их из строк ISO в даты: function findAndConvertDates<T>(objectWithStringDates: T): T { for (let key in Object.keys(objectWithStringDates)) {...
1463 просмотров

Определите возвращаемый тип родственной функции
Я хочу иметь возможность сделать это: const columns: ColumnDefinition<Pair>[] = [ { label: 'Pair', value: pair => (all ? pair.code : pair.second.code), format: result => result.toUpperCase() }, { label: 'Price', numeric:...
138 просмотров

Как получить вывод общего типа с помощью strictNullChecks для сопоставления с менее строгим типом?
У меня есть универсальная функция, которая принимает два аргумента, один из которых является суммой переменной типа, null и undefined, а другой - просто переменной типа. Typescript выводит переменную типа из второго аргумента. Я уже знаю способы...
25 просмотров
schedule 24.09.2022

Строго типизированные параметры отдыха в TypeScript
Как определить динамические строго типизированные параметры отдыха с помощью TypeScript 3.2? Вот мой вариант использования: function exec<T, P extends ICommandNameArgumentTypeMapping, E extends keyof P, U extends P[E]>(command: E, ...rest:...
2894 просмотров
schedule 24.12.2022

Условный тип Typescript, основанный на расширении, ведет себя не так, как ожидалось
Допустим, у нас есть этот пример: class Base<T extends Base<T>> {} class ClassA extends Base<ClassA> {} class ClassB extends Base<ClassB> {} type Condition = ClassA extends ClassB ? true : false; Базовый класс имеет...
827 просмотров

Вывести универсальный тип из ключа объекта
Мой вопрос немного сложнее, поэтому, возможно, вот все необходимые части: // Common interface with an id and a string lieral type interface IHandler { id: Id<IHandler>; type: string; } // Base class for all the handler, with generic...
1204 просмотров

Как предотвратить буквальный тип в TypeScript
Скажем, у меня есть такой класс, который охватывает значение: class Data<T> { constructor(public val: T){} set(newVal: T) { this.val = newVal; } } const a = new Data('hello'); a.set('world'); // typeof a -->...
808 просмотров
schedule 13.07.2023

Параметры машинописного текста - общий массив объектов и массив ключей объекта (частичный)
Я хочу иметь метод, который принимает массив объектов и массив некоторых ключей объектов. Метод вернет массив массивов значений объектов, но только выбранных ключей. данные: [ {"firstName": "Jane", "lastName": "Doe"}, {"firstName": "John",...
2733 просмотров

Тип для объекта, который имеет одно и только одно свойство
Мне нужен тип объекта, который имеет одно и только одно свойство с любым ключом и любым типом T. type ObjWithOneProperty<T> // = ? // OK const obj1: ObjWithOneProperty<boolean> = { property1: true } // OK const obj2:...
46 просмотров
schedule 11.07.2022

Typescript: общая функция для обеспечения безопасного доступа к переменной, не экспортированной из модуля
У меня есть модуль с объектом, содержащим кеш элементов разных типов, каждый из которых хранится в свойстве объекта кеша: type Pet = { name: string, petFood: string } type Human = { firstName: string, lastName: string } type Cache = { pets: Pet[],...
251 просмотров
schedule 21.06.2022

универсальная функция, работающая с помеченным непересекающимся объединением - зачем здесь нужна спецификация типа?
Я изо всех сил пытаюсь понять, почему здесь помогает определенный тип. Вот функция: function getAttributeFromVerification<V extends Verification>( verification: V | null, attribute: keyof V['attributes'] ) { // the verification may...
47 просмотров
schedule 29.04.2022

Можно ли сделать внутреннее соединение на интерфейсах
Допустим, у нас есть два интерфейса First и Second : interface First { a: string; b: number; } interface Second { b: number; c: Date; } С помощью пересечений можно объединить два интерфейса: type FirstSecond = First &...
101 просмотров
schedule 27.07.2023

Типобезопасная каррированная функция для извлечения свойства из объекта в Typescript
Я хотел бы добавить типизацию для моей функции prop . Каррируется (сначала ключ, потом объект). Я пробовал со следующим подходом: частично применив его к какому-то ключу, я пытаюсь ограничить его объектом, содержащим такое свойство. Я...
53 просмотров
schedule 03.09.2022

Как определить функцию с перегрузками, чтобы иметь ровно 1 или 2 аргумента, типы которых зависят от используемого строкового литерала
Я хочу реализовать функцию emitEvent(event, extra?) , которая будет ограничена перечислением строкового литерала известной строки, например POPUP_OPEN , POPUP_CLOSED и т. д. Эта функция принимает второй аргумент, который снова является явно...
113 просмотров

Как добавить defaultProps к универсальному функциональному компоненту с помощью внедрения компонента в TypeScript?
У меня есть функциональный компонент Button , который использует опору as для вставки элемента HTML или другого компонента. Я хочу установить опору as по умолчанию для Link компонента react-router . Это сделало бы опору to Link...
495 просмотров
schedule 15.11.2022

Можно ли автоматически генерировать свойства класса из его универсального типа?
Есть ли способ в TypeScript создать класс со свойствами из его универсального типа, как показано ниже: class SomeClass<T> { // Read props from T somehow here? } interface Props { a: number; b: boolean; } const obj = new...
224 просмотров
schedule 26.09.2022