2016-04-25 16 views
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 

EDIT:将来的にこれを見つけた誰のための作業溶液:

declare module "objectid" { 
    interface ObjectId { 
    (): string 
    isValid(objectId: string): boolean 
    } 
    declare var objectId: ObjectId 
    export = objectId 
} 

... 
import * as makeObjectId from 'objectid' 
const id = makeObjectId() 

答えて

1

あなたのd.tsファイルでこのようにそれを宣言しようとすることができます

declare module "objectid" 
{ 
    interface ObjectId 
    { 
     (): string 
     isValid(objectId: string): boolean 
    } 

    var foo: ObjectId; 

    export default foo; 
} 
+0

それでした! 'var'の代わりに' declare var'だけが変更されました。これは.dtsです。私はこれが必要だと思いますので、型だけでなく、呼び出すことのできる値をエクスポートしていますか? – bcherny

関連する問題