Vad är inneboende i TypeScript?


Jag hittade några typer i lib.es5.d.ts:

/**
 * Obtain the return type of a constructor function type
 */
type InstanceType<T extends abstract new (...args: any) => any> = T extends abstract new (...args: any) => infer R ? R : any;

/**
 * Convert string literal type to uppercase
 */
type Uppercase<S extends string> = intrinsic;

/**
 * Convert string literal type to lowercase
 */
type Lowercase<S extends string> = intrinsic;

/**
 * Convert first character of string literal type to uppercase
 */
type Capitalize<S extends string> = intrinsic;

/**
 * Convert first character of string literal type to lowercase
 */
type Uncapitalize<S extends string> = intrinsic;

Det finns ett nyckelord som heter intrinsic som jag aldrig har sett, inte ens i den officiella TS-dokumentationen.

Jag trodde att typer som Uppercase och Lowercase omvandlas/kartläggs/utleds av andra typer som InstanceType. Men det gör de inte. Det verkar som att intrinsic-nyckelordet är en total svart låda för användaren.

Vad är det? Bör användare använda det i sina egna typer?

När jag försöker använda det:

type MyCapitalize<S extends string> = intrinsic;

Fick fel:

Nyckelordet 'intrinsic' kan endast användas för att deklarera kompilatorns tillhandahållna inbyggda typer.(2795)

Svar #1

Det nya intrinsic-nyckelordet används för att indikera att typaliaset refererar till en implementation som tillhandahålls av kompilatorn.

Det är ett fel att ange intrinsic någon annanstans än omedelbart efter =-avgränsaren i en typaliasdeklaration för en typ som heter Uppercase, Lowercase, Capitalize eller Uncapitalize som tar en enda typparameter (men det är förstås möjligt att ytterligare intrinsic-implementationer kommer att tillhandahållas i framtiden).

Källa som pekar på Typescript-repot

Relaterade artiklar