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