我正在使用TypeScript建立一个网站。我正在使用ES 2015模块加载语法和针对新的浏览器。我正在使用KnockoutJS。
我还将代码从一个旧的副项目中移过来,因此我的.ts
文件与KO视图模型的负载一起存在。
打开一个引用ko.observable
的.ts
文件似乎没问题,因为VS 2019中的TypeScript Intellisense以某种方式识别了Knockout类型。
然而,一旦它在浏览器中编译和加载,这就不好了,因为我需要以某种方式加载Knockout。
所以我简单地输入了这个导入。
// MyViewModels.ts
import * as ko from "lib/knockout/build/output/knockout-latest.js"
但我得到了一个编译器错误。
TS7016 (TS) Could not find a declaration file for module 'lib/knockout/build/output/knockout-latest.js'. '(full-path)' implicitly has an 'any' type.
我显然不应该这样做。我应该在指向knockout-latest.js
的页面上添加一个“老式”的<script>
标记,然后不使用模块来加载它吗?这样会设置一个ko
对象,以便我对ko.observable
的引用能够工作吗?
谢谢
便笺
任何import语句都需要使用一个.js
文件的路径。这是因为TypeScript编译器不会增加导入,所以它们最终会在构建的JS中结束。因此,Chrome和TypeScript都必须对这些导入感到满意。
为此,我已经添加了一个查找-替换Gulp步骤,将from "lib/path.js"
更改为from "../lib/path.js"
。
请参阅相对JS文件导入的TypeScript分辨率与导入的Chrome分辨率
1条答案
按热度按时间ql3eal8s1#
只需将以下内容添加到您的页面(或布局页面)。