首页 > 解决方案 > 生成的定义中的打字稿语法错误

问题描述

Typescript 正在生成一个带有语法错误的定义文件,但仅在某一特定事件中出现。我想了解为什么,以及如何解决它。

产生的错误是

TS1005:“>”应为。

Typescript 中的声明 (.d.ts)

import {O} from 'moduleO'
import {E} from 'moduleE'
…

export declare type MyResult<T> = O<E<T>>;

模块O/Odts

export declare class O<T> { … }

@types/moduleE/index.d.ts

declare module 'moduleE' {
    export interface E<T> { … }

用法(.ts 文件)

import {MyResult} from '@org/my-module'

export interface I {
    f(): MyResult<any>
}

const myFunc = (): MyResult<any> => …

为我的使用生成 .d.ts 文件:

/// <reference path="../../../../../../../../node_modules/@types/moduleE/dist/index.d.ts" />
import {MyResult} from '@org/my-module'
import {O} from 'moduleO'

export interface I {
    f(): MyResult<any>
}

declare const myFunc: () => O<'moduleE'.E<any>>;

显然,语法错误是有效的。但是为什么打字稿会产生这种奇怪的情况,而且只针对函数呢?我在哪里可以看,是否有可能引发这种行为的设置?

我也在一个 monorepo 中,这可能会增加模型分辨率的问题。

  1. 为什么它解析类型而不是按原样使用它?它甚至被进口
  2. moduleE 解析失败的原因可能是什么?
  3. 为什么只针对第二种情况,而不是在界面内部?我该如何改写该功能才能工作?

版本:

"typescript": "2.9.1",
"webpack": "3.10.0",
"ts-loader": "3.3.1",

标签: javascripttypescriptsyntax-error

解决方案


推荐阅读