Typescript 可以导入 Webpack UMD 吗?

cbr*_*nch 5 knockback.js typescript webpack

使用TypeScript,有没有办法对import一个已经被webpack UMD(通用模块定义)封装的模块?例如:

npm install knockback
Run Code Online (Sandbox Code Playgroud)

.js 文件 ( node_modules/knockback/knockback.js) 像这样开始:

(function webpackUniversalModuleDefinition(root, factory) {
    if(typeof exports === 'object' && typeof module === 'object')
        module.exports = factory(require("knockout"), require("backbone"), ....
    else if(typeof define === 'function' && define.amd)
        define(["knockout", "backbone", "underscore"], function webpackLoadOptionalExternalModuleAmd( ....
        });
    else if(typeof exports === 'object')
        exports["kb"] = factory(require("knockout"), require("backbone"), require("underscore"), (function ....
    else
        root["kb"] = factory(root["ko"], root["Backbone"], root["_"], root["jQuery"]);
Run Code Online (Sandbox Code Playgroud)

当我尝试将其导入 .ts 文件时,tsc 产生错误:

import * as k from 'knockback/knockback';

TS2307: Build: Cannot find module 'knockback/knockback'.
Run Code Online (Sandbox Code Playgroud)

除了编辑knockback.js 文件,我还能做些什么来说服tsc 导入这个.js?我正在使用 Typescript 1.8。

bas*_*rat 4

当我尝试将其导入 .ts 文件时,tsc 会产生错误:

您可以很容易地使用类型定义文件

文件knockback.d.ts

declare module 'knockback/knockback' {
    var foo: any;
    export = foo;
}
Run Code Online (Sandbox Code Playgroud)