我目前的打字稿版本是1.6.2,我們將其編譯到ECMA 5.我是新來的TypeScript,所以請理解。這些是進口的庫類型。打字稿導出默認功能
終極版 - thunk.d.ts:
declare module "redux-thunk" {
import { Middleware, Dispatch } from 'redux';
export interface Thunk extends Middleware { }
export interface ThunkInterface {
<T>(dispatch: Dispatch, getState?:() => T): any;
}
var thunk: Thunk;
export default thunk;
}
在app.ts:
import thunk from "redux-thunk";
console.log(thunk);
我越來越不確定。這是取自以下代碼: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/redux-thunk/redux-thunk-tests.ts(7和16行)
我對所有使用默認導入打印機的庫都有同樣的問題。
編輯:我使用NPM爲我做的工作 @Steve芬頓。我剛剛注意到問題出在了Typescript編譯器上。當我創建出口默認功能打字稿文件我得到例如:
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
nextQuestion: nextQuestion,
};
通知exports.default
當我看着redux-thunk.js
文件從NPM下載有:
exports.__esModule = true;
exports['default'] = thunkMiddleware;
function thunkMiddleware(_ref) {
var dispatch = _ref.dispatch;
var getState = _ref.getState;
return function (next) {
return function (action) {
return typeof action === 'function' ? action(dispatch, getState) : next(action);
};
};
}
module.exports = exports['default'];
注意module.exports = exports['default'];
如果我把粗體類型轉換成Babel編譯器,我會得到的結果風格。
最重要的部分是,當我將export['default']
樣式替換爲exports.default
樣式時redux-thunk.js
然後一切正常。這是我的編譯器的問題嗎?
隨着ES5可以使用去 模塊'進口咚=需要('終極版-thunk')'。如果你想使用'import'或者'import *'作爲從'redux-thunk'的thunk或者從'redux-thunk'中導入{thunk} – Rik
@Rik從「redux-thunk」導入thunk有什麼不同?並從「redux-thunk」中導入*。 ?如果只有一個導出默認不應該都返回相同? – MistyK
說實話,我不知道爲什麼它不起作用。也許它是ES6語法。我不是一個打字大師。 – Rik