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

Extending Props results in build error because of custom ExtractPublicPropTypes #4810

Closed
Shinigami92 opened this issue May 11, 2023 · 3 comments

Comments

@Shinigami92
Copy link

Shinigami92 commented May 11, 2023

TuSimple/naive-ui version (版本)

2.34.3

Vue version (Vue 版本)

3.3.1

Browser and its version (浏览器及其版本)

System and its version (系统及其版本)

Node version (Node 版本)

Reappearance link (重现链接)

will added on demand

Reappearance steps (重现步骤)

will added on demand

Expected results (期望的结果)

import type { InputProps } from "naive-ui";

interface Props extends InputProps {
  // ...
}

const props = defineProps<Props>();

Actual results (实际的结果)

[vite:vue] [@vue/compiler-sfc] Failed to resolve index type into finite keys

/.../frontend/node_modules/.pnpm/naive-ui@2.34.3_vue@3.3.1/node_modules/naive-ui/es/_utils/naive/extract-public-props.d.ts
3  |  type themePropKeys = keyof typeof useTheme.props;
4  |  type RemoveReadonly<T> = {
5  |      -readonly [key in keyof T]: T[key];
   |                        ^^^^^^^
6  |  };
7  |  export type ExtractPublicPropTypes<T> = Omit<Partial<RemoveReadonly<ExtractPropTypes<T>>>, Exclude<themePropKeys, 'themeOverrides'> | Extract<keyof T, `internal${string}`>>;
file: /.../frontend/src/components/atoms/inputs/DInput.vue
error during build:
Error: [@vue/compiler-sfc] Failed to resolve index type into finite keys

/.../frontend/node_modules/.pnpm/naive-ui@2.34.3_vue@3.3.1/node_modules/naive-ui/es/_utils/naive/extract-public-props.d.ts
3  |  type themePropKeys = keyof typeof useTheme.props;
4  |  type RemoveReadonly<T> = {
5  |      -readonly [key in keyof T]: T[key];
   |                        ^^^^^^^
6  |  };
7  |  export type ExtractPublicPropTypes<T> = Omit<Partial<RemoveReadonly<ExtractPropTypes<T>>>, Exclude<themePropKeys, 'themeOverrides'> | Extract<keyof T, `internal${string}`>>;
    at ScriptCompileContext.error (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:15839:11)
    at resolveStringType (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:18187:14)
    at resolveMappedType (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:18080:16)
    at innerResolveTypeElements (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17926:14)
    at resolveTypeElements (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17900:35)
    at innerResolveTypeElements (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17945:16)
    at resolveTypeElements (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17900:35)
    at resolveBuiltin (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:18222:13)
    at innerResolveTypeElements (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17952:20)
    at resolveTypeElements (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17900:35)
    at resolveBuiltin (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:18222:13)
    at innerResolveTypeElements (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17952:20)
    at resolveTypeElements (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17900:35)
    at innerResolveTypeElements (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17945:16)
    at resolveTypeElements (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17900:35)
    at innerResolveTypeElements (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17945:16)
    at resolveTypeElements (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17900:35)
    at innerResolveTypeElements (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17945:16)
    at resolveTypeElements (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17900:35)
    at resolveInterfaceMembers (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:18068:25)
    at innerResolveTypeElements (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17912:14)
    at resolveTypeElements (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17900:35)
    at innerResolveTypeElements (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17945:16)
    at resolveTypeElements (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17900:35)
    at resolveRuntimePropsFromType (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:19236:20)
    at genRuntimePropsFromTypes (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:19212:17)
    at genRuntimeProps (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:19202:18)
    at Object.compileScript (/.../frontend/node_modules/.pnpm/@vue+compiler-sfc@3.3.1/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:20309:21)
    at resolveScript (/.../frontend/node_modules/.pnpm/@vitejs+plugin-vue@4.2.2_vite@4.3.5_vue@3.3.1/node_modules/@vitejs/plugin-vue/dist/index.cjs:287:31)
    at genScriptCode (/.../frontend/node_modules/.pnpm/@vitejs+plugin-vue@4.2.2_vite@4.3.5_vue@3.3.1/node_modules/@vitejs/plugin-vue/dist/index.cjs:2473:18)
    at transformMain (/.../frontend/node_modules/.pnpm/@vitejs+plugin-vue@4.2.2_vite@4.3.5_vue@3.3.1/node_modules/@vitejs/plugin-vue/dist/index.cjs:2286:54)
    at Object.transform (/.../frontend/node_modules/.pnpm/@vitejs+plugin-vue@4.2.2_vite@4.3.5_vue@3.3.1/node_modules/@vitejs/plugin-vue/dist/index.cjs:2798:16)
    at file:///.../frontend/node_modules/.pnpm/rollup@3.21.6/node_modules/rollup/dist/es/shared/node-entry.js:24551:40

Remarks (补充说明)

@yyx990803 said NaiveUI should use Vue's ExtractPublicPropTypes

https://github.com/vuejs/core/blob/6e1966a92fc4407ba951b3f1dfa70605c5104a56/packages/runtime-core/src/componentProps.ts#L156-L165

@github-actions github-actions bot added the untriaged need to sort label May 11, 2023
@Shinigami92
Copy link
Author

For now this can be workaround with using /* @vue-ignore */ (Vue v3.3.2)
See vuejs/core#8286 (comment) for more

@07akioni 07akioni removed the untriaged need to sort label May 16, 2023
@07akioni
Copy link
Collaborator

I will consider use vue's ExtractPropTypes in later minor version.

@jahnli
Copy link
Collaborator

jahnli commented Mar 12, 2024

This issue does not have any recent activity. If you are still experiencing similar problems, open a new error, including a minimal copy of the problem

@jahnli jahnli closed this as completed Mar 12, 2024
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

3 participants