Как использовать экспортированные типы из внешних файлов .d.ts?
Я пытаюсь использовать @types/youtube
для предоставления типов для моего приложения, но компилятор TypeScript не включает эти типы в сборку.
Я установил зависимость @types/youtube
и ссылаюсь на типы из кода, устанавливая переменные, такие как const ytPlayerState = YT.PlayerState.PLAYING
, но выходной код не компилируется в значения вместо имен этих констант. Я попытался поместить node_modules/@types
в typesRoots
и youtube
в разделы types
, учитывая, что некоторые значения по умолчанию у меня не работают по какой-то причине, и попытался использовать <reference.../>
. Ни один из них не работал для меня.
// options for YT player to load iframe
private playerVariables = {
enablejsapi: YT.JsApi.Enable,
version: 3,
autohide: YT.AutoHide.HideAllControls,
autoplay: YT.AutoPlay.AutoPlay,
color: 'red',
theme: 'dark',
iv_load_policy: YT.IvLoadPolicy.Hide,
modestbranding: YT.ModestBranding.Modest,
rel: YT.RelatedVideos.Hide,
showinfo: YT.ShowInfo.Hide,
cc_load_policy: YT.ClosedCaptionsLoadPolicy.UserDefault,
};
Ожидаемый результат после компиляции:
_this.playerVariables = {
enablejsapi: 1,
version: 3,
autohide: 1,
autoplay: 0,
color: 'red',
theme: 'dark',
iv_load_policy: 3,
modestbranding: 1,
rel: 0,
showinfo: 0,
cc_load_policy: 0,
};
Фактический результат:
_this.playerVariables = {
enablejsapi: YT.JsApi.Enable,
version: 3,
autohide: YT.AutoHide.HideAllControls,
autoplay: YT.AutoPlay.AutoPlay,
color: 'red',
theme: 'dark',
iv_load_policy: YT.IvLoadPolicy.Hide,
modestbranding: YT.ModestBranding.Modest,
rel: YT.RelatedVideos.Hide,
showinfo: YT.ShowInfo.Hide,
cc_load_policy: YT.ClosedCaptionsLoadPolicy.UserDefault,
};
Как упоминалось в разделе комментариев @pswg, причина такого поведения в том, что enums
не объявляются как const
s. Добавление const
к перечислениям устраняет проблему.
Ссылка: https://www.typescriptlang.org/docs/handbook/enums.html#const-enums
- Вопросы
- Typescript-typings
- Как использовать экспортированные типы из внешних файлов .d.ts?