浏览器中带有TypeScript和ES2015的KnockoutJS

浏览器中带有TypeScript和ES2015的KnockoutJS,typescript,knockout.js,Typescript,Knockout.js,我正在使用TypeScript构建一个网站。我正在使用ES2015模块加载语法并针对新浏览器。我正在使用KnockoutJS 我还将代码从一个旧的side项目转移过来,因此我的.ts文件中包含大量的KO视图模型 打开引用了ko.observable的.ts文件似乎没问题,因为VS2019中的TypeScript Intellisense以某种方式识别了敲除类型 然而,一旦它被编译并加载到浏览器中,这就没有用了,因为我需要以某种方式加载Knockout 所以我只是输入了这个输入 // MyView

我正在使用TypeScript构建一个网站。我正在使用ES2015模块加载语法并针对新浏览器。我正在使用KnockoutJS

我还将代码从一个旧的side项目转移过来,因此我的
.ts
文件中包含大量的KO视图模型

打开引用了
ko.observable
.ts
文件似乎没问题,因为VS2019中的TypeScript Intellisense以某种方式识别了敲除类型

然而,一旦它被编译并加载到浏览器中,这就没有用了,因为我需要以某种方式加载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
的“老式”标签,并在不使用模块的情况下加载它,这是否会设置一个
ko
对象,以便我对
ko.observable
的引用起作用

谢谢

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

为此,我已经添加了一个find replace Gulp步骤,将
从“lib/path.js”
更改为
从“./lib/path.js”


请参见

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


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