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

dts-genで生成した型をrest-api-client のジェネリクス型引数に渡すとエラーになる #19

Closed
the-red opened this issue Apr 27, 2021 · 3 comments
Labels
pkg: dts-gen @kintone/dts-gen pkg: rest-api-client @kintone/rest-api-client

Comments

@the-red
Copy link

the-red commented Apr 27, 2021

Target Package(対象パッケージ)

  • @kintone/dts-gen 3.1.12
  • @kintone/rest-api-client 1.13.0

Environment(環境)

  • Operating System(OS): Windows 10
  • Browser(ブラウザ環境の場合): Google Chrome
  • Node.js version(Node.js環境の場合): 12.10.0
  • TypeScript version: 4.2.4

Current Behavior(現在の挙動)

rest-api-clientでclient.record.getAllRecords<T>() を呼ぶときに、
dts-genで生成されたSavedXxxFieldsTにそのまま渡すと、
こんなエラーが出てしまいます。

client.record.getAllRecords<kintone.types.SavedXxxFields>(params)
型 'SavedXxxFields' は制約 'Record' を満たしていません。
型 'SavedXxxFields' のインデックス シグネチャがありません。

調べたところ、フィールドのプロパティtype valueのうち、
typeがdts-genではオプションなのに対し、
https://github.com/kintone/js-sdk/blob/e054f514677c3e712b34c56e09fda749065804c9/packages/dts-gen/kintone.d.ts#L260-L265

rest-api-clientでは必須のため、エラーになっているようでした。
https://github.com/kintone/js-sdk/blob/974bb73aca45f52bf30f2ce611e34f90482d7b74/packages/rest-api-client/src/KintoneFields/types/field.ts#L1-L4

型ライブラリts-essentialsのDeepRequiredを使って、
https://github.com/krzkaczor/ts-essentials

こうラップしてやると、エラーは回避できました。

client.record.getAllRecords<DeepRequired<kintone.types.SavedXxxFields>>(params)

Expected Behavior(期待する挙動)

dts-genが生成する型をそのままrest-api-clientに渡して
エラーなく通るようにしていただきたいです。

client.record.getAllRecords<kintone.types.SavedXxxFields>(params)

SavedXxxFields以外の新しい型定義が別途生成されても構いません。
自分でラップするのは流石につらいもので・・・

@zaki-yama zaki-yama added pkg: dts-gen @kintone/dts-gen pkg: rest-api-client @kintone/rest-api-client labels Apr 28, 2021
@zaki-yama
Copy link
Contributor

@the-red
ご報告ありがとうございます。
本件は検討すべき事項として認識しており、js-sdk側で kintone/js-sdk#445 を登録済みです。
そちらの issue にも記載がありますが、実現方法の検討や型定義周りの整理を今後進めていきます。

@the-red
Copy link
Author

the-red commented May 7, 2021

本家ですでにプルリク出ていたのですね。失礼しました。改善お待ちしてます!

紛らわしいので、こっちはクローズしてもらって大丈夫です。

@zaki-yama
Copy link
Contributor

ありがとうございます。それではこちらはクローズさせていただきます。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
pkg: dts-gen @kintone/dts-gen pkg: rest-api-client @kintone/rest-api-client
Projects
None yet
Development

No branches or pull requests

2 participants