如何合并从相对路径导入的类型?

时间:2020-02-19 13:46:12

标签: typescript

我有一个用TypeScript编写的,具有自定义类型的项目,正在使用import语句将其导入到我的.ts模块中:

import { MyCoolInterface } from './types'

当我使用tsc构建项目时,我得到了一个声明文件index.d.tsindex.js,并且我的键入内容没有与tsc生成的内容连接在一起。 tsc只是将字符串import { MyCoolInterface } from './types'复制到生成的声明文件中,显然在我的 dist 目录中找不到该字符串,因此键入似乎已损坏。有没有办法将我自己的自动生成的类型连接到一个文件中?

我的index.d.ts

export interface UmbressOptions {
    isProxyTrusted?: boolean
    rateLimiter?: {
        enabled?: boolean
        requests?: number
        per?: number
        banFor?: number
    }
    clearQueueAfterBan?: boolean
    logs?: boolean
    whitelist?: Array<string>
    blacklist?: Array<string>
    checkSuspiciousAddresses?: {
        enabled?: boolean
        token?: string
        action?: 'block' | 'check'
        banFor?: number
        cookieTtl?: 1
    }
    advancedClientChallenging?: {
        enabled: boolean
        cookieTtl?: number
        content?: string
        userAgentsWhitelist?: RegExp
        cache?: 'redis'
        cacheHost?: string
        cachePort?: number
    }
}

与tsc生成的index.d.ts合并:

/// <reference types="ioredis" />
/// <reference types="express" />
/// <reference types="pug" />
declare module 'abuseipdb' {
    import { UmbressOptions } from './types' // <------------ Import or export declaration in an ambient module declaration cannot reference module through relative module name.ts(2439)
    import { Redis } from 'ioredis'
    export function checkAddress(ip: string, options: UmbressOptions, redis: Redis, jailKey: string): Promise<void>
}

1 个答案:

答案 0 :(得分:1)

将您的typings.d.ts文件更改为typings.ts。创建内部版本时,Typescript会忽略.d.ts个文件。对于Typescript,所有.d.ts都只是类型声明,对javascript没有用。希望对您有帮助!