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

KnockoutJS with TypeScript and ES2015 in browser

我正在使用 TypeScript 构建网站。我正在使用 ES2015 模块加载语法并针对新浏览器。我正在使用 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 的页面上添加一个 "old fashioned" <script> 标记并在不使用模块的情况下加载它,这是否会设置一个 ko 对象以便我对 [=14] 的引用=]工作?

谢谢

旁注

任何导入语句都需要使用 .js 文件的路径。这是因为 TypeScript 编译器不会增加导入,所以它们最终会出现在构建的 JS 中。因此,Chrome 必须对这些导入感到满意,TypeScript 也必须如此。

为此,我已经不得不添加一个查找替换 Gulp 步骤来将 from "lib/path.js" 更改为 from "../lib/path.js"

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

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