2017-08-30 29 views
1

我在流類型的目錄中一些常見的類型聲明就像一個文件:eslint-插件導入如何增加流量聲明模塊異常

共types.js

// @flow 

declare module 'common-types' { 
    declare export type RequestState = { 
    setLoading:() => void, 
    setFinished:() => void, 
    setError: (error: AxiosFailure) => void, 
    reset:() => void, 
    status: LoadingStatus, 
    error: AxiosFailure | void, 
    }; 

    declare export type LoadingStatus = '' | 'loading' | 'finished'; 

    declare export type ErrorObject = { [key: string]: string | string[] | Error }; 

    declare export type AxiosFailure = { 
    status: number, 
    data: ErrorObject, 
    } 

} 

現在,我將其導入這樣的文件:

import type { RequestState } from 'common-types'; 

,但我得到eslint-插件導入錯誤約丟失的文件擴展名以及無法解決路徑到模塊的'常見類型'

我該如何處理它?

+0

'common-types'實際上是一個npm模塊嗎?似乎將它變成本地文件會更容易,如果你實際上沒有聲明真正的npm模塊的類型,那麼執行'./ common-types'。 – loganfsmyth

+0

它不是一個模塊。我想避免像'../../../../../ common-types'那樣長時間導入。如果我製作webpack別名,那麼流再次顯示關於未找到模塊的錯誤。 – Tomasz

+0

通常,如果你不得不這樣做,這表明你的文件結構不是很好的考慮因素。你的類型應該只傳遞你的代碼和你的數據,所以如果你導出一個返回類型的函數,那麼也要從那個模塊中重新導出類型。如果你導入一個返回類型的函數,你可以從同一個模塊導入類型。 – loganfsmyth

回答

0

我找到了解決方案。作爲@logansmyth在評論

建議你的類型應該只是通過你的代碼與您的數據

我的問題是用的WebPack別名一起。 Flow指出我有關未安裝模塊的錯誤。 Hovewer我found out,我可以使用映射器在.flowconfig像:用的WebPack別名一起

module.name_mapper='^common' ->'<PROJECT_ROOT>/src/common' 

,這使得eslint-插件導入和流量快樂以及正確類型檢查。現在我導入類型與common組件,沒有搞流式目錄。