Вопросы по теме '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 просмотров
schedule
21.09.2022
Получение возвращаемого типа функции, использующей дженерики
Отказ от ответственности: следуют чрезмерно упрощенные функции, я знаю, что они бесполезны
function thinger<T>(thing: T): T {
return thing;
}
const thing = thinger({ a: "lol" });
thing.a;
Приведенный выше код отлично...
2557 просмотров
schedule
13.05.2023
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 просмотров
schedule
15.06.2022
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 просмотров
schedule
28.02.2022
Класс машинописного текста Typeof не может быть назначен классу, который его расширяет.
У нас есть базовый класс StoreObject , который предоставляет общие методы преобразования/лечения и т. д. для объектов, сохраняемых в БД. Я хотел бы иметь возможность указывать более строгие типы возврата из этих методов с помощью дженериков. Однако...
313 просмотров
schedule
10.12.2022
В машинописном тексте, как вы создаете индекс из вложенных ключей
Это не работает, но я хочу сделать что-то вроде этого:
type ProxyNestedKeys<O> = {
[P in Extract<keyof O, string> Q in Extract<keyof O[P], string>]: boolean
}
так что ProxyNestedKeys могут быть проиндексированы вложенными...
200 просмотров
schedule
23.08.2022
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 просмотров
schedule
05.05.2022
TypeScript: вернуть тот же тип, что и параметр
formatISODate функция ожидает строковое значение.
Есть много строк, которые мне нужно преобразовать, если они не определены. Я мог сделать следующее:
{
date1: date1 ? formatISODate(date1) : undefined,
date2: date2 ? formatISODate(date2)...
1029 просмотров
schedule
30.03.2023
Используйте интерфейс машинописного текста и абстрактный класс без указания общих типов
Я создал интерфейс и абстрактный класс в следующих строках:
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 просмотров
schedule
26.09.2022
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 просмотров
schedule
28.06.2023
TypeScript: определение типа путем вывода типов аргументов функции
Есть ли возможность описать тип, который выводится параметрами функции? Мне нужно что-то вроде этого:
// some fn I have no control over its params
function someFn(a: string, b?: number, c?: any): any { /* ... */ }
// my wanted type that...
360 просмотров
schedule
31.01.2024
Объект с универсальными ключами в машинописном тексте
Я хотел бы создать общую функцию, которая будет принимать объект, затем выполнять некоторые преобразования и возвращать новый объект с теми же ключами и разными значениями. Я пытаюсь сделать его «строго типизированным», чтобы каждый, кто его...
5515 просмотров
schedule
28.03.2023