[英]How to use .d.ts file in Visual Studio 2017 for DayPilot
在Visual Studio 2017的ASP.Net Core项目中尝试DayPilot Scheduler ,我发现了.d.ts
文件,并认为这就是获取IntelliSense的方式,使用TypeScript针对库生成我的JavaScript。
我没有TypeScript的经验,所以我正在做的事情可能不正确,到目前为止,根据Visual Studio的建议,我有一个.ts
文件,如下所示:
import { DayPilot } from "../wwwroot/lib/daypilot-pro/scripts/daypilot-all.min";
var dp = new DayPilot.Scheduler("dp");
dp.scale = "Day";
dp.timeHeaders = [
{ groupBy: "Month", format: "MMM yy" },
{ groupBy: "Day" }
];
Visual Studio在项目根目录中创建的默认tsconfig.json
{
"compilerOptions": {
"noImplicitAny": false,
"noEmitOnError": true,
"removeComments": false,
"sourceMap": true,
"target": "es5"
},
"exclude": [
"node_modules",
"wwwroot"
]
}
这将产生下面的JavaScript,该JavaScript在浏览器中不起作用:
未捕获的ReferenceError:dp.js:2中未定义导出
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var daypilot_all_min_1 = require("../wwwroot/lib/daypilot-pro/scripts/daypilot-all.min");
var dp = new daypilot_all_min_1.DayPilot.Scheduler("dp");
dp.scale = "Day";
dp.timeHeaders = [
{ groupBy: "Month", format: "MMM yy" },
{ groupBy: "Day" }
];
dp.allowMultiMove = true;
//# sourceMappingURL=dp.js.map
我尝试使用下面的语法引用.d.ts
文件,但是随后我的脚本中出现错误。 Cannot find name DayPilot
,这建议将导入作为潜在的解决方法。
///<reference path="../wwwroot/lib/daypilot-pro/scripts/daypilot-all.min.d.ts"/>
我在做什么错,应该如何使用提供的.d.ts
?
默认情况下,TypeScript为CommonJS编译,Node所支持,但浏览器不支持。 为了使您的代码正常工作,可以采取以下几种方法:
设置"module": "none"
,通过<script>
标记加载daypilot脚本,并在ts文件中全局访问DayPilot
,而不是将其导入。 一个简单而直接的解决方案,但是这里的缺点是您失去了模块带来的好处,并且也有可能没有编写类型定义来适应这种用法。
在tsconfig.json中设置"module": "es6"
,并使用浏览器模块 。 不利的一面是,ES模块仅在较新的浏览器中受支持,如果需要支持,则在较旧的浏览器中将不起作用。
使用模块捆绑器。 Webpack是一种流行且灵活的选项,但是涉及大量的学习和工具开销。 Parcel是一个很好的选择,它提供了TypeScript支持。 如果您只想启动并运行,我会选择Parcel。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.