0
這裏是我正在做打字的代碼:如何使用默認函數導出爲commonjs模塊創建類型?
https://github.com/jden/objectid/blob/1.1.0/index.js
我到目前爲止已經試過 -
嘗試#1:
declare module "objectid" {
interface ObjectId {
(): string
isValid(objectId: string): boolean
}
export default ObjectId
}
...
import makeObjectId from 'objectid' // Error TS2304: Cannot find name 'makeObjectId'
嘗試#2:
declare module "objectid" {
interface ObjectId {
(): string
isValid(objectId: string): boolean
}
export = ObjectId
}
...
import makeObjectId = require('objectid')
const id = makeObjectId() // Error TS2304: Cannot find name 'makeObjectId'
嘗試#3:
declare module "objectid" {
export default function makeObjectId(): string
export function isValid(objectId: string): boolean
}
...
import makeObjectId = require('objectid')
const id = makeObjectId() // TypeError: objectid_1.default is not a function
編輯:工作的人的解決方案,認爲這在未來:
declare module "objectid" {
interface ObjectId {
(): string
isValid(objectId: string): boolean
}
declare var objectId: ObjectId
export = objectId
}
...
import * as makeObjectId from 'objectid'
const id = makeObjectId()
這樣做!因爲它是一個.d.ts,所以只聲明'聲明var'而不是'var'。我想這是必要的,所以我輸出一個值(可以被稱爲),而不僅僅是一個類型? – bcherny