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,CapitalizeellerUncapitalizesom 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