属性的条接口设置为值

问题描述 投票:-1回答:2

有没有办法从一个接口剔除值:

export interface FileQuery {
    kind: 'FileQuery';
    path: string;
    encoding?: FileEncodings | null;
    flag?: FileSystemFlags;
}

哪里:

StripValue<FileQuery>

将不包含kind

将包含这样的类型:

interface Stripped {
    path: string;
    encoding?: FileEncodings | null;
    flag?: FileSystemFlags;
}
typescript
2个回答
1
投票

你可以使用两个接口:

export interface FileQuery {
    path: string;
    encoding?: FileEncodings | null;
    flag?: FileSystemFlags;
}

export interface SpecialFileQuery implements FileQuery {
    kind: 'FileQuery';
}

0
投票

使用省略:

export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;

class FileQueryHandler {
    static make (a : Omit<FileQuery, 'kind'>): FileQuery {
        return { kind: 'FileQuery', ...a };
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.