生成的定义中的打字稿语法错误

时间:2019-07-12 20:53:15

标签: javascript typescript syntax-error

Typescript正在生成带有语法错误的定义文件,但仅在某些情况下才会发生。我想了解原因以及如何解决。

产生的错误是

  

TS1005:“>”。

Typescript(.d.ts)中的声明

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

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

moduleO / O.d.ts

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. 模块E的解析失败可能是什么原因?
  3. 为什么只在第二种情况下而不在界面内部?我应该如何重新定义该功能的工作方式?

版本:

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

0 个答案:

没有答案