#typescript #type-declaration #cldr
Вопрос:
cldr-data
Пакет определяется примерно так:
function cldrData(path) { // ... } cldrData.all = function() { // ... } cldrData.entireMainFor = function(locale/*, ...*/) { // ... } cldrData.entireSupplemental = function() { // ... } module.exports = cldrData;
Как я должен написать файл объявления типа для такого пакета?
Комментарии:
1. Разве вы не можете определить класс с
all
entireMainFor
помощью методов иentireSupplemental
в качестве методов?
Ответ №1:
Кажется, это работает:
declare module 'cldr-data' { interface CldrData { (path: any, ...args: any[]): any; availableLocales: any; all(): any; entireMainFor(locale: any, ...args: any[]): any; entireSupplemental(): any; } declare const cldrData: CldrData; export = cldrData; };
Использование:
import cldrData from 'cldr-data'; cldrData('main/en/numbers'); cldrData.entireSupplemental(); cldrData.entireMainFor('en'); console.log(cldrData.all());
Комментарии:
1. Работает ли это? Я попытался импортировать с
import cldrData, { all } from 'cldr-data';
помощью, и у меня возникла ошибка во время выполнения.2. Если это сработает для вас, я думаю, было бы неплохо отредактировать ваш ответ с помощью инструкции usage и good import.
3. Вы правы, здесь есть проблема. Я пытаюсь кое-что исправить.