types(utils): pick type (#8179)

This commit is contained in:
neverland 2021-02-19 19:38:47 +08:00 committed by GitHub
parent d67031a98d
commit 8696f4ee70
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 8 additions and 6 deletions

View File

@ -50,7 +50,9 @@ export default createComponent({
emits: ['select', 'cancel', 'update:show'],
setup(props, { slots, emit }) {
const popupPropKeys = Object.keys(popupSharedProps);
const popupPropKeys = Object.keys(popupSharedProps) as Array<
keyof typeof popupSharedProps
>;
const onUpdateShow = (show: boolean) => {
emit('update:show', show);

View File

@ -18,10 +18,10 @@ export type DialogAction = 'confirm' | 'cancel';
export type DialogMessageAlign = 'left' | 'center' | 'right';
const popupKeys = [
...Object.keys(popupSharedProps),
...(Object.keys(popupSharedProps) as Array<keyof typeof popupSharedProps>),
'transition',
'closeOnPopstate',
];
] as const;
export default createComponent({
props: {

View File

@ -105,7 +105,7 @@ export default createComponent({
'clearable',
'modelValue',
'clearTrigger',
];
] as const;
const renderField = () => {
const fieldAttrs = {

View File

@ -38,9 +38,9 @@ export function get(object: any, path: string): any {
return result;
}
export function pick(obj: Record<string, any>, keys: string[]) {
export function pick<T, U extends keyof T>(obj: T, keys: ReadonlyArray<U>) {
return keys.reduce((ret, key) => {
ret[key] = obj[key];
return ret;
}, {} as Record<string, any>);
}, {} as Pick<T, U>);
}