0

节点 v14.x,StencilJS (React) v2.3.x

我有一个带有将字符串数组转换为数字数组的导出函数的测试助手文件:

export function parseNumericStringOrStringArrayToIntegers(value: string | (string | string[])[]): number | (number | number[])[] {
  if (typeof value === 'string') {
    return parseInt(value);
  } else {
    return value.map((item) => parseNumericStringOrStringArrayToIntegers(item)) as number | (number | number[])[];
  }
}

我决定这个函数应该在index.d.ts组件中,这样我就可以在组件本身中更合乎逻辑地使用它。我将它移动并更改exportdeclare,删除import {parseNumericStringOrStringArrayToIntegers} from "./index";了它被JetBrains IDE > move更改的位置,并且奇怪地期望东西“正常工作”。它没有...

它给我带来了两个npm run build似乎相关的错误,但我不知道如何解决它:

[ ERROR ]  TypeScript: ./src/components/app/index.d.ts:46:108
           An implementation cannot be declared in ambient contexts.

     L46:  declare function parseNumericStringOrStringArrayToIntegers(value: string | (string | string[])[]): ConfigIntValue {
     L47:    if (typeof value === 'string') {

[ ERROR ]  TypeScript: ./src/components/app/index.d.ts:48:5
           Statements are not allowed in ambient contexts.

     L47:  if (typeof value === 'string') {
     L48:    return parseInt(value);
     L49:  } else {

显然,我在这里遗漏了一些明显的东西,但是什么?

4

1 回答 1

0

我认为这里的问题可能是您将实现放在index.d.ts

我决定这个函数应该在组件的 index.d.ts 中

.d.ts类型声明文件结尾的文件是 TypeScript 中的特殊文件,不能包含函数的实现,只能包含它们的类型信息。在没有看到整个代码库的情况下,我怀疑这就是原因。如果您将代码移至index.ts或任何其他非.d.ts,这可能会解决您的问题

于 2021-11-18T21:04:22.980 回答