knockout.js 在浏览器中使用TypeScript和ES2015的KnockoutJS

r1wp621o  于 2022-11-10  发布在  TypeScript
关注(0)|答案(1)|浏览(140)

我正在使用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分辨率

ql3eal8s

ql3eal8s1#

只需将以下内容添加到您的页面(或布局页面)。

<script src="~/lib/knockout/build/output/knockout-latest.js"></script>

相关问题