Mam zewnętrzny SDK napisany w JavaScript, którego używam. Jeden z tych modułów, Blob
, jest nowy, ale również udostępnia enum FooEnum
(członkowie Bar
i Baz
).Notatka TypeScript nierozliczona i wyliczeniowa
Kod do korzystania z tego SDK w JavaScript jest tak:
const blobInstance = new Sdk.Blob();
const fooType = Sdk.Blob.FooEnum.Baz;
Jestem teraz próbuje napisać interfejs, który mogę rzucić ten SDK, aby dać mi trochę typu bezpieczeństwa. Oto co mam do tej pory:
interface BlobInterface { }
enum Foo {
Bar,
Baz
}
interface Sdk {
Blob: {
new(): BlobInterface;
FooEnum: Foo;
}
}
Moim problemem jest jednak to, że kiedy odwołać Blob.FooEnum
, to myśli, że sama FooEnum
jest rzeczywiście członkiem wyliczenia Foo
(tj uważa, że jest Bar
lub Baz
) i dlatego nie pozwala mi uzyskać z niego Baz
.
Jak mogę powiedzieć TypeScript, że Blob.FooEnum
rzeczywiście wskazuje na samo wyliczenie i nie jest członkiem wyliczenia?