Skip to content

Missing .d.ts file in packaged output, when using tsc in host program based ts 4.x may cause problem #45

@lvqq

Description

@lvqq

打包产物中缺少 .d.ts 文件,在 ts 项目中直接引用的 src/index.ts 文件的类型定义,执行 tsc 会直接编译 node_module 中 number-precison 的 index.ts,可能会产生错误。

例如在使用 ts 4.x,且开启了 noUncheckedIndexedAccess 编译选项时会产生下面的报错:

node_modules/number-precision/src/index.ts:22:16 - error TS2532: Object is possibly 'undefined'.

22   const len = (eSplit[0].split('.')[1] || '').length - +(eSplit[1] || 0);
                  ~~~~~~~~~

node_modules/number-precision/src/index.ts:55:23 - error TS2345: Argument of type 'string | number | undefined' is not assignable to parameter of type 'string | number'.
  Type 'undefined' is not assignable to type 'string | number'.

55   let res = operation(num1, num2);
                         ~~~~

node_modules/number-precision/src/index.ts:73:35 - error TS2345: Argument of type 'string | number | undefined' is not assignable to parameter of type 'string | number'.
  Type 'undefined' is not assignable to type 'string | number'.

73   const num1Changed = float2Fixed(num1);
                                     ~~~~

node_modules/number-precision/src/index.ts:74:35 - error TS2345: Argument of type 'string | number | undefined' is not assignable to parameter of type 'string | number'.
  Type 'undefined' is not assignable to type 'string | number'.

74   const num2Changed = float2Fixed(num2);
                                     ~~~~

node_modules/number-precision/src/index.ts:75:31 - error TS2345: Argument of type 'string | number | undefined' is not assignable to parameter of type 'string | number'.
  Type 'undefined' is not assignable to type 'string | number'.

75   const baseNum = digitLength(num1) + digitLength(num2);
                                 ~~~~

node_modules/number-precision/src/index.ts:75:51 - error TS2345: Argument of type 'string | number | undefined' is not assignable to parameter of type 'string | number'.
  Type 'undefined' is not assignable to type 'string | number'.

75   const baseNum = digitLength(num1) + digitLength(num2);
                                                     ~~~~

node_modules/number-precision/src/index.ts:93:53 - error TS2345: Argument of type 'string | number | undefined' is not assignable to parameter of type 'string | number'.
  Type 'undefined' is not assignable to type 'string | number'.

93   const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));
                                                       ~~~~

node_modules/number-precision/src/index.ts:93:72 - error TS2345: Argument of type 'string | number | undefined' is not assignable to parameter of type 'string | number'.
  Type 'undefined' is not assignable to type 'string | number'.

93   const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));
                                                                          ~~~~

node_modules/number-precision/src/index.ts:95:17 - error TS2345: Argument of type 'string | number | undefined' is not assignable to parameter of type 'string | number'.
  Type 'undefined' is not assignable to type 'string | number'.

95   return (times(num1, baseNum) + times(num2, baseNum)) / baseNum;
                   ~~~~

node_modules/number-precision/src/index.ts:95:40 - error TS2345: Argument of type 'string | number | undefined' is not assignable to parameter of type 'string | number'.
  Type 'undefined' is not assignable to type 'string | number'.

95   return (times(num1, baseNum) + times(num2, baseNum)) / baseNum;
                                          ~~~~

node_modules/number-precision/src/index.ts:107:53 - error TS2345: Argument of type 'string | number | undefined' is not assignable to parameter of type 'string | number'.
  Type 'undefined' is not assignable to type 'string | number'.

107   const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));
                                                        ~~~~

node_modules/number-precision/src/index.ts:107:72 - error TS2345: Argument of type 'string | number | undefined' is not assignable to parameter of type 'string | number'.
  Type 'undefined' is not assignable to type 'string | number'.

107   const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));
                                                                           ~~~~

node_modules/number-precision/src/index.ts:108:17 - error TS2345: Argument of type 'string | number | undefined' is not assignable to parameter of type 'string | number'.
  Type 'undefined' is not assignable to type 'string | number'.

108   return (times(num1, baseNum) - times(num2, baseNum)) / baseNum;
                    ~~~~

node_modules/number-precision/src/index.ts:108:40 - error TS2345: Argument of type 'string | number | undefined' is not assignable to parameter of type 'string | number'.
  Type 'undefined' is not assignable to type 'string | number'.

108   return (times(num1, baseNum) - times(num2, baseNum)) / baseNum;
                                           ~~~~

node_modules/number-precision/src/index.ts:120:35 - error TS2345: Argument of type 'string | number | undefined' is not assignable to parameter of type 'string | number'.
  Type 'undefined' is not assignable to type 'string | number'.

120   const num1Changed = float2Fixed(num1);
                                      ~~~~

node_modules/number-precision/src/index.ts:121:35 - error TS2345: Argument of type 'string | number | undefined' is not assignable to parameter of type 'string | number'.
  Type 'undefined' is not assignable to type 'string | number'.

121   const num2Changed = float2Fixed(num2);
                                      ~~~~

node_modules/number-precision/src/index.ts:125:74 - error TS2345: Argument of type 'string | number | undefined' is not assignable to parameter of type 'string | number'.
  Type 'undefined' is not assignable to type 'string | number'.

125   return times(num1Changed / num2Changed, strip(Math.pow(10, digitLength(num2) - digitLength(num1))));
                                                                             ~~~~

node_modules/number-precision/src/index.ts:125:94 - error TS2345: Argument of type 'string | number | undefined' is not assignable to parameter of type 'string | number'.
  Type 'undefined' is not assignable to type 'string | number'.

125   return times(num1Changed / num2Changed, strip(Math.pow(10, digitLength(num2) - digitLength(num1))));
                                                                                                 ~~~~


Found 18 errors.

因为 .ts 文件一旦被引用总会被 tsc 编译,无法被忽略,.d.ts 类型声明文件则可以被排除,因此希望可以加上类型声明文件的生成

参考:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions