Первое, что нужно отметить, это то, что когда вы пишете [SomeType]
, это означает, что кортеж ровно одного элемента этого типа, если вам нужен массив, должен иметь значение SomeType[]
.
Другое дело, что родительский интерфейс должен быть более общим , чем дочерний, что противоположно вашему коду.
В зависимости от ваших требований что-то вроде этого должно работать:
export enum ObjectClassEnum {
top = 'top',
posixGroup = 'posixGroup',
}
export interface ILdapObject {
objectClass: ObjectClassEnum[];
}
export interface ILdapObjectTop extends ILdapObject {
objectClass: ObjectClassEnum.top[];
}
export interface ILdapObjectPosixGroup extends ILdapObject {
objectClass: (ObjectClassEnum.top | ObjectClassEnum.posixGroup)[];
}
const test: ILdapObjectPosixGroup = {
objectClass: [ObjectClassEnum.top, ObjectClassEnum.posixGroup],
}
function processObject(obj: ILdapObject) {
// ...
}
processObject(test)