takto lze deklarovat typy funkcí v rozhraní Typescript. Napsal tento článek, protože matoucí informace tam a dokumentace strojopisu není přímá o syntaxi.
(poznámka: Následující příklady používají třídy Typescript React pouze jako příklady, protože typy funkcí jsou zde zvláště užitečné, ale syntaxe platí pro jakékoli rozhraní Typescript.)
Příklad 1: Funkce, která nebere argumenty a nevrací hodnotu:
V níže uvedeném příkladuonChange
je funkce prohlášení. Funkce nevrací nic (void), takže deklarujeme typ návratu jako libovolný. Je to proto, že neplatné a nikdy nejsou hodnoceny odlišně v různých kontextech (nad rámec tohoto článku). (Níže jsou uvedeny některé příklady zadaných návratových hodnot.)
interface MyClassProps {
someProp: string;
onChange(): any;
}class MyClass extends React.Component<MyClassProps, MyClassState> ...
příklad 2: funkce, která přijímá argument:
zahrnuje název argumentu a jeho typ. Název argumentu je vyžadován, ale nemusí se shodovat při instanci skutečné funkce, ale typ se musí shodovat. Je to kachna napsaná jako všechno na strojopisu.
interface MyClassProps {
anotherProp: number;
onChange(name: string): any;
}
příklad 3: Funkce, která přijímá argument a vrací hodnotu:
Tato funkce přijímá řetězec jako argument a vrací číslo.
interface MyClassProps {
onChange(name: string): number;
}
Příklad 4: Funkce, která je volitelná:
Přípona, název vlastnosti s Volitelným Operátor ?
. Za název vlastnosti a před seznam argumentů vložte ?
. V TypeScript React jsou vyžadovány všechny rekvizity, pokud nepoužíváte volitelný operátor. Stejně jako u jiných nepotřebných rekvizit v React budete muset před použitím zkontrolovat, zda je podpěra undefined
.
interface MyClassProps {
onChange?(name: string): number;
niceProp: boolean;
}
příklad 5: použití klíčového slova typu:
někdy je vhodné nejprve deklarovat typ funkce a poté použít typ v rozhraní. Chcete-li deklarovat funkci jako typ, syntaxe se mírně liší. Použijte operátor šipky.
type MyFunctionType = (name: string) => number;interface MyClassProps {
onChange: MyFunctionType;
niceProp: string;
}
užívat si.