Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
lvqq opened this issue Dec 23, 2021 · 0 comments

Comments

@lvqq
Copy link
Contributor

lvqq commented Dec 23, 2021

打包产物中缺少 .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 类型声明文件则可以被排除,因此希望可以加上类型声明文件的生成

参考:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants