У меня есть библиотека javascript, которая включается тегом HTML-script. Библиотека выставляет себя, присоединяя себя к объекту окна.
См .:
(function(globals) {
var django = globals.django || (globals.django = {});
//...
}(this));
Это (как вы уже догадались) из django-проекта. Документация здесь , но, думаю, это не имеет значения.
Для этого я мог бы просто сделать следующее:
let djangojs = (window as any).django;
// and then:
djangojs.gettext("foo");
//...
Но я подумал, ядобавьте немного ввода, чтобы я сделал
export namespace django {
export function gettext(msgid: string): string;
export function ngettext(singular: string, plural: string, count: number): string;
export function interpolate(fmt: string, obj: object, named: boolean): string;
export function get_format(format_type:
'DATE_FORMAT' |
'DATE_INPUT_FORMATS' |
'DATETIME_FORMAT' |
'DATETIME_INPUT_FORMATS' |
'DECIMAL_SEPARATOR' |
'FIRST_DAY_OF_WEEK' |
'MONTH_DAY_FORMAT' |
'NUMBER_GROUPING' |
'SHORT_DATE_FORMAT' |
'SHORT_DATETIME_FORMAT' |
'THOUSAND_SEPARATOR' |
'TIME_FORMAT' |
'TIME_INPUT_FORMATS' |
'YEAR_MONTH_FORMAT'
): string;
export function gettext_noop(msgid: string): string;
export function pgettext(context: string, msgid: string): string;
export function npgettext(context: string, singular: string, plural: string, count: number): string;
export function pluralidx(n: number): boolean | number;
}
Теперь, прежде всего, это правильный способ написания такого объявления?
Если я попытаюсь использовать его таким образом, я получаюошибка:
let djangojs: django = (window as any).django;
// Gives this error:
// TS2709: Cannot use namespace 'django' as a type.
Как правильно использовать объявление типа?