我有一個顯然使用lodash的angular2應用程序。但我也有父項目中的下劃線字符串underscore.js。如何在打字稿中引用下劃線而不是lodash
現在打字稿編譯器抱怨lodash上缺少方法。 但我不是指lodash,因爲該方法是在下劃線。
Property 'classify' does not exist on type 'LoDashStatic'
我該如何抑制這樣的錯誤?
我有一個顯然使用lodash的angular2應用程序。但我也有父項目中的下劃線字符串underscore.js。如何在打字稿中引用下劃線而不是lodash
現在打字稿編譯器抱怨lodash上缺少方法。 但我不是指lodash,因爲該方法是在下劃線。
Property 'classify' does not exist on type 'LoDashStatic'
我該如何抑制這樣的錯誤?
由於您使用的角度我認爲你既然你正在使用的模塊是使用模塊
,你要麼裝載機或處理他們打包和你應該相應地使用下劃線。
正如在Saravana的回答中,您應該先安裝@ types/underscore軟件包。
此外會讓你應該卸載lodash類型,如果你不使用它們
npm uninstall --save @types/lodash
npm install --save @types/underscore
但是,直接從@types包導入是不正確的使用,同時使用下劃線作爲一個全球性的代表未能槓桿模塊。
下面是安裝類型包後應如何引用下劃線的示例。
ES模塊< => CommonJS的互操作風格(首選)
import _ from 'underscore'; // note the absence of @types from the path
如果打字稿提出了這個錯誤,但它的工作原理在運行時,在你的tsconfig.json文件中設置"allowSyntheticDefaultImports": true
。
如果在運行時失敗,請嘗試其他方法之一。
打字稿CommonJS的作爲命名空間互操作風格(非標)
import * as _ from 'underscore';
打字稿CommonJS的風格(也可以與AMD/UMD)
import _ = require('underscore');
非常感謝您的詳細解釋。重點在於我不想在模塊中導入下劃線。它已經包含在另一個包中。通過將它導入角度,我最終會得到兩個導入的下劃線庫,對吧?!因此,獲取代碼完成和引用就像這樣:「從@ types/underscore」導入{UnderscoreStatic};「符合我的需求。 – dc10
_「通過將它導入角度,我最終會得到兩個導入的下劃線庫,對嗎?!」_ no,只有當其他軟件包將其包含爲全局而不是正確導入時。 –
但是即使你使用'declare const _:UnderscoreStatic;'解決方案,它仍然是一個等待發生的錯誤,即你正在從'@ types'中導入。 –
你可以安裝@types/underscore
,然後只需要導入你想使用的方法,它不會拋出任何錯誤。不要忘記添加到類型tsconfig.json文件
你是如何導入在強調你的TypeScript文件? – Saravana