Я пишу файл определение машинописи .d.ts и пытаюсь определить этот кусок кода: яваскриптЛучшего способ определить вложенные параметры в файле определение машинописи
от: http://summernote.org/deep-dive/#initialization-options
$('#foo').bar({
toolbar: [
['style', ['bold', 'italic', 'underline', 'clear']],
['font', ['strikethrough', 'superscript', 'subscript']],
['fontsize', ['fontsize']],
['color', ['color']],
['para', ['ul', 'ol', 'paragraph']],
['height', ['height']],
],
otheroption: // ...
});
Каков наилучший способ определения такой структуры (вложенные параметры)?
Вот что я нашел до сих пор, но не знаю, что рекомендуется, или если есть лучшие решения.
interface fooOptions {
toolbar?: any
}
или
type toolbarOptions = [string, string[]][];
interface foo {
toolbar?: toolbarOptions
}
или
type toolbarOptionNames = 'style' | 'font' | 'fontsize' | 'color' | 'para' | 'height';
type toolbarOptionValues = 'bold' | 'italic' | 'underline' | 'clear' | 'strikethrough' | 'superscript' | 'subscript' | 'fontsize' | 'color' | 'ul' | 'ol' | 'paragraph' | 'height';
interface foo {
toolbar?: [toolbarOptionNames, toolbarOptionValues[]][];
}
или
type toolbarStyleGroupOptions = 'bold' | 'italic' | 'underline' | 'clear';
type toolbarFontGroupOptions = 'strikethrough' | 'superscript' | 'subscript';
type toolbarFontsizeGroupOptions = 'fontsize';
// etc...
type toolbarDef = [
['style', toolbarStyleGroupOptions[]]
| ['font', toolbarFontGroupOptions[]]
| ['fontsize', toolbarFontsizeGroupOptions[]]
// | ...
];
interface foo {
toolbar?: toolbarDef;
}
так или иначе?
Спасибо, что подтвердили, что мой код «хорошо» :-). не знал о keyof. Как только он будет выпущен, я попытаюсь обновить код (https://github.com/wstaelens/TypeScript-Summernote) – juFo
toolbarOption []; Почему «любой»? можно ли это заменить? –
juFo
Это 'any', потому что это любая параметризованная панель инструментовOption. Вы правы, хотя это может быть потенциально слабовато в некоторых случаях, и вы можете заменить его на 'keyof toolbarOptionsMap' и сделать его строго лучше, я думаю. Я обновил этот пример. –