Typescript: hva er en «naken typeparameter»


Se https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-8.html#distributive-conditional-types

Betingede typer der den sjekkede typen er en naken typeparameter...

Google hjelper ikke, eller svarene er for C#, som jeg ikke kan. Finner heller ikke begrepet i Typescript-dokumentasjonen. Å få en mening fra konteksten er også vanskelig...

Forresten, jeg vet hva en "typeparameter" er. Men hva betyr "naken"?

Svar #1

Når de sier naken her, mener de at typeparameteren er til stede uten å være pakket inn i en annen type, (f.eks. et array, eller en tuple, eller en funksjon, eller et løfte eller en annen generisk type)

Eks :

type NakedUsage<T> = T extends boolean ? "YES" : "NO"
type WrappedUsage<T> = [T] extends [boolean] ? "YES" : "NO"; // wrapped in a tuple

Grunnen til at naken vs ikke naken er viktig, er at nakne bruk fordeler seg over en union, noe som betyr at den betingede typen anvendes for hvert medlem av unionen, og resultatet vil være unionen av alle anvendelser

type Distributed = NakedUsage<number | boolean > // = NakedUsage<number> | NakedUsage<boolean> =  "NO" | "YES" 
type NotDistributed = WrappedUsage<number | boolean > // "NO"    
type NotDistributed2 = WrappedUsage<boolean > // "YES"

Les her om betinget typedistribusjon.

Relaterte artikler