请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

<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回答

同学你好

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

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 回复 有任何疑惑可以回复我~
  • omit 现在ts 内置了把?type IconPropsWithoutColorAndType = Omit<IconProps, 'color' | 'type'>
    回复 有任何疑惑可以回复我~ 2024-05-19 00:14:09
  • 张轩 回复 慕仙1105321 #2
    是的 这位同学问的要是想自己手动的话 应该怎么写
    回复 有任何疑惑可以回复我~ 2024-05-20 08:09:23
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信