-
-
Notifications
You must be signed in to change notification settings - Fork 15
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: support custom definitions #117
base: main
Are you sure you want to change the base?
Conversation
总觉得实现怪怪得呢 |
它的意思是为内部的 import { PageMetaDatum as SPageMetaDatum } from '@uni-helper/vite-plugin-uni-pages';
export interface UniPagesRouteMeta {
PageMetaDatum: Partial<SPageMetaDatum> & {
/** 自定义属性 */
customAttribute?: string
}
H5: {
/** 自定义属性 */
customAttribute?: string
}
PagesConfig: {
/** 自定义属性 */
customAttribute?: string
}
} |
我也觉得,但也没有其他好的方法吧 |
意思是不修改 yamlLs 那个文件也行? |
对的,我按快捷提示,也能出来 |
yaml: https://github.com/volarjs/services/blob/master/packages/yaml/ 俺是参考 volar 的这两个包写的,开始只支持了 json,后来发现可以直接搞多个 ls,然后就一起支持了 |
不理解,也不是执行顺序问题。 |
感觉不太好,这样在 |
晚点我来看看 |
@KeJunMao 换成了只修改 |
// custom.d.ts
export {}
declare module '@uni-helper/vite-plugin-uni-pages' {
interface PageMetaDatum {
/** 自定义属性 */
customAttribute?: string
}
} 假设有以上文件,是否可以直接从 workspace 拿到 tsconfig ,然后通过 ts api 拿到 PageMetaDatum 接口的所有 type definitions,最后判断是不是有被扩展过。如果有就动态生成,然后合并,如果没有就直接用默认的。 这样的好处是可以 0 配置 |
@KeJunMao 相同的 import { PageMetaDatum as IPageMetaDatum } from '@uni-helper/vite-plugin-uni-pages';
interface PageMeta {
/** 自定义属性 */
customAttribute?: string
}
// volar 需要拿到内置的和自定义的
interface ExtraPageMetaDatum extends PageMeta, Partial<IPageMetaDatum> { }
// ts 需要自定义的
declare module '@uni-helper/vite-plugin-uni-pages' {
interface PageMetaDatum extends PageMeta { }
} |
这个有点深了,我不太会,最近时间也少了 |
Description 描述
允许用户基于已存在的 schema 添加额外的类型声明
Linked Issues 关联的 Issues
#116
Additional context 额外上下文
lang="yaml"
,不知道为啥也能给出提示?参考项目:volar-plugin-vue-router