如果自己写这个omit函数,应该怎么给这个函数标注ts类型

来源:6-3 Icon 组件编码第一部分 - 完善功能以及样式添加

自学成菜_

2023-09-04

<template>
    <i class="c-icon" :class="{[`c-icon--${type}`]:type}">
        <font-awesome-icon v-bind="fontawesomeProps" />
    </i>
</template>

<script setup lang="ts">
import type { IconProps } from './types'
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
defineOptions({
    name: 'CIcon',
    inheritAttrs: false
})
const props = defineProps<IconProps>()

const omit = (object, paths) => {
    const result = {};
    for (const key in object) {
        if (!paths.includes(key)) {
            result[key] = object[key];
        }
    }
    return result;
}

const fontawesomeProps = omit(props, ['type', 'color']);

老师我请教一下如果自己写这个omit函数,应该怎么给这个函数标注ts类型

写回答

1回答

张轩

2023-09-05

同学你好

简单写了一下,可以试试:

const omit = <T extends object, K extends keyof T>(object: T, paths: K[]): Omit<T, K> => {
    const result = {} as any;
    for (const key in object) {
        if (!paths.includes(key as any)) {
            result[key] = object[key];
        }
    }
    return result;
};

基本原理就是使用 Omit 手动标准了返回

0
2
张轩
回复
慕仙1105321
是的 这位同学问的要是想自己手动的话 应该怎么写
2024-05-20
共2条回复

进阶必学,打造媲美ElementPlus的组件库

Vue3.3 + TS4 ,自主打造媲美 ElementPlus 的组件库

483 学习 · 219 问题

查看课程