Я пытаюсь интегрировать / использовать jsview / jsrender в проекте машинописного текста со сборкой, выполненной с использованием webpack-4.Поскольку пакет jsrender / jsviews, установленный через npm, не содержит определений типов, они не доступны через DefinitiveTyped, но автор (ы) jsview / jsrender предоставил определения типов отдельно.Я сохранил их в папках typings / [jsrender, jsview] и изменил свой tsconfig.json, как показано ниже:
Мой tsconfig.json имеет следующее:
{
"compileOnSave": true,
"compilerOptions": {
"baseUrl": ".",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"sourceMap": true,
"target": "es2015",
"moduleResolution": "node",
"declaration": false
},
"include": [
"static/js/**/*",
"*/static/ts/**/*.ts"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
],
"files": [
"./typings/jsrender/index.d.ts",
"./typings/jsviews/index.d.ts"
]
}
И я импортирую jsrender с:
import * as jsrender from 'jsrender';
И когда я пытаюсь использовать jsrender с:
tmpl = jsrender($).templates('Name: {{:name}}');
В веб-пакете выдается следующая ошибка:
TS2339: Свойство «шаблоны» не существует для типа «JQuery».
Первые несколько строк определений типов для jsrender имеют следующее:
/// <reference types="jquery" />
declare module 'jsrender' {
export = jsrender;
}
declare const jsrender: JQueryStatic;
interface JQueryStatic {
/* var htmlString = $.render.templateName(data, myHelpersObject); // Render named template */
render: {
[tmplName: string]: JsViews.TemplateRender;
};
/* $.views.xxx ... // JsRender/JsViews APIs */
views: JsViews.Views;
/* $.templates(...) or $.templates.templateName: Compile/get template */
templates: JsViews.Templates;
}
ЯЯ не уверен, почему webpack жалуется, хотя при отладке, если я просто делаю:
let tmpl = jsrender($);
и ставлю точку останова на строке выше, я вижу, что у объекта tmpl есть функция «templates».
Я не уверен, что это проблема webpack, tsconfig или как я использую jsrender.