javascript - Hur tilldelar man typer till destrukturerade variabler i Typescript?
Om jag ville tilldela olika typer till var och en av de destrukturerade parametrarna som skickas in i en funktion, istället för en enhetlig typ, vilket format bör jag då använda?
Till exempel, om jag ville att alla tre variabler skulle vara strängar, skulle det vara följande format:
const Auth = ({ history, match, path }: string) => {
//content
}
Men, vad om jag ville att den första skulle vara ett objekt, den andra en sträng och den tredje en array?
Svar #1
Du måste skriva objektet som destrueras, helt och hållet.
const Auth = ({ history, match, path }: {
history: string,
match: string,
path: string
}) => {
//content
}
Typescript kommer sedan att slå upp typerna för dessa egenskaper och sedan korrekt härleda de rätta typerna.
Vissa variationer.
Skapa en diskret typ för objektet som destruktureras. (Jag använder detta mönster för React-props ganska mycket):
interface AuthInfo {
history: string,
match: string,
path: string
}
const Auth = ({ history, match, path }: AuthInfo) => {
//content
}
Eller mindre strikt typad:
const Auth = ({ history, match, path }: { [key: string]: string }) => {
//content
}
Olika typer för olika nycklar:
const Foo = ({ a, b }: { a: string, b: number[] }) => {
//content
}
