在浏览器中使用 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>
我正在使用 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>