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

Почему аргумент типа не выводится как тип объединения?
Этот код declare function fn<T, U>(array: T[], predicates: ((arg: T) => U)[]): [T, U]; let a = fn([1, 2, 3], [x => 2, x => 's']); приводит к этой ошибке: Аргумент типа для параметра типа «U» не может быть выведен из...
424 просмотров
schedule 28.03.2022

Тип ключа индекса объекта в Typescript
Я определил свой общий тип как interface IDictionary<TValue> { [key: string|number]: TValue; } Но TSLint жалуется. Как я должен определить тип индекса объекта, который может иметь любой ключ в качестве ключа? Я тоже пробовал их, но...
94989 просмотров
schedule 07.01.2023

Причина для [typof T] в дженериках, имеющих семантику, отличную от жестко закодированного типа?
Итак, в машинописном тексте я нашел трюк, позволяющий превратить тип объекта в размеченное объединение, сопоставив тип с парой ключ-значение, а затем создав тип, который может быть любым значением на карте, используя тип keyof . Вот простой пример:...
67 просмотров

Получение возвращаемого типа функции, использующей дженерики
Отказ от ответственности: следуют чрезмерно упрощенные функции, я знаю, что они бесполезны function thinger<T>(thing: T): T { return thing; } const thing = thinger({ a: "lol" }); thing.a; Приведенный выше код отлично...
2557 просмотров

TypeScript: Type '{id: строка; } & Pick ‹T, Exclude‹ keyof T, id ›› 'не назначается типу' T '
У меня есть такая функция: const createRelationship = <T extends { id: string }>( includedItems: Array<DataResponse<T>>, categories: Array<{ id: string, type: string }>, ): Array<T> => { return...
1304 просмотров

Typescript › Универсальные шаблоны › Union Constraint
Почему компилятор машинописного текста выдает следующую ошибку: Operator '+' cannot be applied to types 'T' and 'T'. , при компиляции: export const addNumbersOrCombineStrings = <T extends string | number>( param1: T, param2: T ):...
53 просмотров
schedule 21.06.2022

Typescript - тип безопасный глубокий пропуск, или: как перечислить допустимые пути к объектам
Хорошо, это длинный и очень конкретный. Был бы очень признателен за любой вклад. Я написал рекурсивный тип Omit , который принимает тип T и кортеж строк («путь») и индексирует в T , удаляя последний элемент на пути и возвращая этот тип. Я...
872 просмотров

Класс машинописного текста Typeof не может быть назначен классу, который его расширяет.
У нас есть базовый класс StoreObject , который предоставляет общие методы преобразования/лечения и т. д. для объектов, сохраняемых в БД. Я хотел бы иметь возможность указывать более строгие типы возврата из этих методов с помощью дженериков. Однако...
313 просмотров

В машинописном тексте, как вы создаете индекс из вложенных ключей
Это не работает, но я хочу сделать что-то вроде этого: type ProxyNestedKeys<O> = { [P in Extract<keyof O, string> Q in Extract<keyof O[P], string>]: boolean } так что ProxyNestedKeys могут быть проиндексированы вложенными...
200 просмотров

Typescript использует производный класс в качестве возвращаемого типа метода
У меня есть абстрактный класс в машинописном тексте, у которого есть метод для предоставления обратного вызова для последующего использования. Возвращаемый тип метода — это класс, поэтому я могу использовать свободное кодирование. Я пытаюсь...
41 просмотров
schedule 20.08.2022

Явно на первом родовом, но подразумевает второе в TS?
Возможно ли быть явным для первого общего, но неявно (предполагать) второе? например, функция выбора: function pick<T extends { [K: string]: any }, U extends keyof T>(obj: T, key: U): T[U] { return obj[key]; } interface Obj {...
363 просмотров

TypeScript: вернуть тот же тип, что и параметр
formatISODate функция ожидает строковое значение. Есть много строк, которые мне нужно преобразовать, если они не определены. Я мог сделать следующее: { date1: date1 ? formatISODate(date1) : undefined, date2: date2 ? formatISODate(date2)...
1029 просмотров

Используйте интерфейс машинописного текста и абстрактный класс без указания общих типов
Я создал интерфейс и абстрактный класс в следующих строках: interface ITest<A, B> { testFunc: (input: A) => B; } abstract class AClass<A, B> { abstract testFunc: (input: A) => B; } У меня есть несколько подклассов,...
200 просмотров
schedule 05.09.2022

Расширение универсального класса Typescript с помощью абстрактных методов
Я пытаюсь расширить абстрактный общий класс, но у меня возникают проблемы с расширением некоторых методов. Учти это: abstract class A<T,K> { protected abstract upload<S>(item: T): S protected abstract download(item: T): K...
308 просмотров
schedule 28.09.2023

как я могу использовать универсальный тип в теле функции
я пытаюсь инкапсулировать некоторую логику внутри компонента OrderGuard (который может работать с двумя типами заказов: CheckinOrder | Checkout order, но, когда я пытаюсь передать заказ обратному вызову orderLoad, машинописный текст начинает...
59 просмотров

TypeScript: аргумент универсального типа функции выводится из неправильного параметра
В приведенном ниже коде, если я не укажу T явно при вызове функции, например getOrPut<Item>(...) , это выводится из параметра create , в результате созданный тип элемента может быть несовместим со словарем obj , см. последнюю строку кода...
59 просмотров
schedule 04.06.2023

Generics TypeScript: вывести тип из типа аргументов функции?
У меня есть метод с двумя аргументами, и я хочу, чтобы он выводил тип из первого аргумента. Например, в следующем коде я хочу, чтобы тип T функции create_C<T> выводился из firstArgument , чтобы возвращаемый тип create_C функции был...
1613 просмотров
schedule 25.06.2022

Typescript - функции обертывания с сохранением подписей
Я пытаюсь понять, как обернуть определенные функции, чтобы я мог выполнять дополнительную работу, сохраняя их подписи. Вот желаемый эффект: Программист определяет интерфейс: const actions = { first: (id: number) => {/*...*/},...
411 просмотров

TypeScript: определение типа путем вывода типов аргументов функции
Есть ли возможность описать тип, который выводится параметрами функции? Мне нужно что-то вроде этого: // some fn I have no control over its params function someFn(a: string, b?: number, c?: any): any { /* ... */ } // my wanted type that...
360 просмотров

Объект с универсальными ключами в машинописном тексте
Я хотел бы создать общую функцию, которая будет принимать объект, затем выполнять некоторые преобразования и возвращать новый объект с теми же ключами и разными значениями. Я пытаюсь сделать его «строго типизированным», чтобы каждый, кто его...
5515 просмотров