TypeScript 1.5: Exportera standard som implementerar ett gränssnitt
I TypeScript 1.5 har jag följande gränssnitt i IFoo.ts:
// IFoo.ts
interface IFoo<T> {
bar(): T;
}
Och en implementering i FooString.ts:
// FooString.ts
export default {
bar: () => 'Hello world'
}
Hur kan modulen FooString.ts deklarera objektliteralet som den exporterar som en implementation av IFoo<sring>? Utan en deklaration kontrolleras inte implementationen av interfacet av kompilatorn, och att förlora kompileringstidskontrollen av FooString-modulen skulle vara problematiskt.
Svar #1
Typecasting i 1.5 kommer att bevara kontrollen under kompileringstiden, så detta kommer att fungera:
export default <IFoo<string>> {
bar: () => 'Hello world'
}
Svar #2
export var defaults:IFoo<string> = {
bar: () => 'Hello world'
}
