用于二次封装类型继承贼方便
export type TypeNoReadonly<T> = {
-readonly [K in keyof T]: T[K]
}
export type InstancePropsType<T extends abstract new (...args: any) => any> = Partial<TypeNoReadonly<InstanceType<T>['$props']>>
import { ElButton } from "element-plus"
type ElButtonType = InstancePropsType<typeof ElButton>
比如我需要一个 MyButton 基于 ElButton 的二次封装
import { ElButton } from "element-plus";
export type TypeNoReadonly<T> = {
-readonly [K in keyof T]: T[K];
};
export type InstancePropsType<T extends abstract new (...args: any) => any> = Partial<TypeNoReadonly<InstanceType<T>["$props"]>>;
type ElButtonType = InstancePropsType<typeof ElButton>;
interface Props extends /* @vue-ignore */ ElButtonType {
myattr: string;
}
const props = defineProps<Props>();
const attrs = useAttrs();