Как указать тип класса generi c в Typescript? (например, typeof (AppResponse <string>)) - PullRequest
0 голосов
/ 07 апреля 2020

Я должен указать type?: Type<unknown>; в моем приложении.

Интерфейс выглядит следующим образом:

export interface Test extends Omit<ResponseObject, 'description'> {
    status?: number | 'default';
    type?: Type<unknown>;
    isArray?: boolean;
    description?: string;
    a?: Type<string>
}

В идеале я хочу сделать что-то вроде:

type: AppResponse<string>,

но я не могу. Компилятор говорит что-то вроде:

error TS1005: '(' expected., что бесполезно.

Я только что просматривал переполнение стека, но не смог найти ничего полезного.

Кто-нибудь знаете как подойти? Спасибо!

1 Ответ

0 голосов
/ 07 апреля 2020

?? @ Андрей,

Обобщения определяются после имени интерфейса с помощью скобки angular. Вообще говоря, определение универсального c будет использовать T, U и т. Д. c., Но универсальный c может быть назван как угодно

export interface ITest<Type, AnotherType> {
    status?: number | 'default';
    type?: Type;
    isArray?: boolean;
    description?: string;
    a?: AnotherType
}

Затем вы будете использовать ITest как Итак:

const test: ITest<unknown, string> = {
  a: "Some String"
}

// Type 'number' is not assignable to type 'string | undefined'.ts(2322)
const notValid: ITest<unknown, string> = {
  a: 123
};

Вместо второго типа, являющегося строкой, вы можете использовать другое определение обобщенного c:

interface IAppResponse<T> { prop1: T, ...props }

const test2: ITest<unknown, IAppResponse<string>> = { a: { prop1: 'value' } };

...