nutstore 发表于 2023-10-30 10:32:56

【16.2.5】workbook.getActiveSheet 的 ts 声明不正确

getActiveSheet 在包里面的声明是 WorkSheet 但是也有可能是 TableSheet ,WorkSheet 是可以正常读取到options的,但是TableSheet是没有options的,这个问题你们ts因为类型声明问题导致项目代码出现了崩溃,望修复。

Joestar.Xu 发表于 2023-10-30 13:35:12

您好,如果您想要获取的是当前的集算表的话,需要使用getActiveSheetTab来获取,而非getActiveSheet。

nutstore 发表于 2023-10-30 14:39:19

Joestar.Xu 发表于 2023-10-30 13:35
您好,如果您想要获取的是当前的集算表的话,需要使用getActiveSheetTab来获取,而非getActiveSheet。

我知道获取集算表用 getActiveSheetTab。主要是spreadjs的这个ts声明明确说了返回 WorkSheet 但是有时候并不是从而导致某些情况下页面的crash,我觉得这是一个bug

Joestar.Xu 发表于 2023-10-30 14:42:01

了解了,您这边能否提供一个可以复现该问题的Demo,我这边调研一下看看。

nutstore 发表于 2023-10-30 16:50:37

Joestar.Xu 发表于 2023-10-30 14:42
了解了,您这边能否提供一个可以复现该问题的Demo,我这边调研一下看看。




这个附件项目即可复现

Joestar.Xu 发表于 2023-10-30 17:39:08

我将您这个JSON导入到Demo里面,当前Active的Sheet是TableSheet,对于这种情况,使用getActiveSheet接口是无法获取当前sheet的,你会看见右侧控制台中输出的值为undefined。



这种情况下您应该使用getActiveSheetTab接口:



而不是getActiveSheet接口:

nutstore 发表于 2023-10-30 18:08:53

Joestar.Xu 发表于 2023-10-30 17:39
我将您这个JSON导入到Demo里面,当前Active的Sheet是TableSheet,对于这种情况,使用getActiveSheet接口是 ...

对啊 我知道要使用 getActiveSheetTab 去获取 TableSheet。但是我这里反应的是ts的声明问题,spreadjs的ts声明保证 getActiveSheet 接口返回的是 WorkSheet 而不是一个 WorkSheet | undefined 这样的联合类型。这样的声明确实会给使用ts的工程项目带来隐性的bug,因为我并不能知道此时加载的ssjson的activeSheet到底能不能按照声明的说法在不做空值检测的情况下获取到值

Joestar.Xu 发表于 2023-10-31 08:56:06

:loap1:明白您的意思了,我会将您这个需求反馈给研发那边,本帖先移至产品需求板块了。
页: [1]
查看完整版本: 【16.2.5】workbook.getActiveSheet 的 ts 声明不正确