Hur man utökar grundläggande typ i TypeScript?
Jag hade ett fall där två egenskaper båda hade "number" och jag använde den ena istället för den andra av misstag. Inget klagade och det tog ett tag att felsöka dessa.
Jag undrar om det är möjligt att utöka grundläggande typer för att säkerställa att när jag försöker tilldela till exempel ett värde av typen Age till en variabel med typen Score (båda är trötta nummer)?
REDIGERA: Ursäkta att den ursprungliga frågan inte hade ett kodexempel. Nurbol Alpysbayev tolkade min fråga korrekt och hans kodexempel representerar faktiskt det jag ville se hända:
type Score = number;
type Age = number;
let score: Score = 999;
let age: Age = 45;
score = age; // I want to have this line to throw an error
Svar #1
Kvaliteten på frågan kunde vara mycket bättre, men jag tror att jag förstod den.
Jag tror att du gjorde något liknande detta:
type Score = number
type Age = number
let score: Score = 999
let age: Age = 45
score = age // no errors (and it confused you)
Svaret på din fråga är nu: både Age och Score är typalias av samma typ, vilket är number. Namnen är bara för bekvämlighet, därför kallas de alias från början.
Så du använder typalias för en felaktig uppgift. Om du behöver särskilja typer, då måste du använda gränssnitt på det här sättet:
interface Score {type: 'score', value: number}
interface Age {type: 'age', value: number}
let score: Score = {type: 'score', value: 999}
let age: Age = {type: 'age', value: 45}
score = age // error
Du bör dock veta att för data som representerar Score och Age bör du bara lämna typen number utan att överengineera dem.
