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

feat(h5): 增加vue3/tsx组件类型定义 #11653

Merged
merged 3 commits into from
Apr 15, 2022
Merged

Conversation

agileago
Copy link
Collaborator

这个 PR 做了什么? (简要描述所做更改)

这个 PR 是什么类型? (至少选择一个)

  • 错误修复(Bugfix) issue id #
  • 新功能(Feature)
  • 代码重构(Refactor)
  • TypeScript 类型定义修改(Typings)
  • 文档修改(Docs)
  • 代码风格更新(Code style update)
  • 其他,请描述(Other, please describe):

这个 PR 涉及以下平台:

  • 所有小程序
  • 微信小程序
  • 支付宝小程序
  • 百度小程序
  • 字节跳动小程序
  • QQ 轻应用
  • 京东小程序
  • 快应用平台(QuickApp)
  • Web 平台(H5)
  • 移动端(React-Native)

@taro-bot2
Copy link

taro-bot2 bot commented Apr 14, 2022

欢迎提交 PR~ Taro 非常感谢您对开源事业做出的贡献!🌷🌷🌷

一般 PR 会在一到两周内进行 review,成功合入后会随下一个版本进行发布。

Review 需要耗费大量时间,所以请遵循以下规范,协助我们提高 review 效率🙏🙏🙏

  1. 详细介绍 PR 的背景(非常重要,例如解决了什么问题,该问题如何复现等)
  2. 确保 CI 顺利运行。
  3. 最好能提供对应的测试用例。

为了更好地进行沟通,请加入 Taro 开发者微信群:

Copy link
Contributor

@ZakaryCode ZakaryCode left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

直接这样定义开发者应该不好使用吧,是不是应该考虑定义一个 module 让开发者自己引入会更好一些

@ZakaryCode ZakaryCode added the A-typings Area - TypeScript Typings 相关 label Apr 14, 2022
@agileago
Copy link
Collaborator Author

ts重写类型只能是在全局类型定义里面去重写一个库的类型, 比如 global.d.ts, 所以我设计的使用者使用是直接重写组件库的定义

declare module '@tarojs/components' {
   export * from '@tarojs/components/types/index.vue3'
}

另外一种设计就是直接提供类型重写文件,比如提供一个 types/vue3.d.ts,内容就是上面的,然后在 tsconfig.json 中引用

"compilerOptions": {
    "types": ["@tarojs/taro", "webpack-env", "vite/client", "@tarojs/components/types/vue3"],
  }

你是想要第二种?

@agileago
Copy link
Collaborator Author

@ZakaryCode 修改了增加了用户直接在 tsconfig.json 中引入类型定义

{
  "compilerOptions": {
     "types": ["@tarojs/component/vue3"]
  }
}

@yijinc
Copy link
Contributor

yijinc commented Aug 19, 2022

我有这个定义,编写tsx 就会报错

import { defineComponent } from 'vue';
import { View, Text } from '@tarojs/components';
import styles from './style.module.less';

export default defineComponent({
  setup(props) {
    return () => (
      <View className={styles.container}>
        <Text>123</Text>
      </View>
    );
  }
});

error:

(alias) const View: VueComponentType<ViewProps>
import View
JSX element type 'View' does not have any construct or call signatures.ts(2604)
No quick fixes available

我吧 global.d.ts declare module '@tarojs/components' 注释了发现 就不报错了,这是什么原因呢

@agileago
Copy link
Collaborator Author

@ZakaryCode 类型是不是搞错了, 他那个 Component 没有正确推断出来 { new (): { $props }} 这样的结构

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-typings Area - TypeScript Typings 相关
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants