class ClassA { constructor(private entity?: TEntityClass, public settings?: SettingsInterface) { } } export interface ValueInterface { func?: (row: TValueClass) => any; value?: string; } export interface SettingsInterface { values?: (row: TClass) => ValueInterface[], } class ConcreteClass { theName = 'myClass'; } var thisGetsTheFalseError = new ClassA(new ConcreteClass(), { values: o => [ { value: o.theName, func: x => 'asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj' } ] }); var thisIsOk = new ClassA(new ConcreteClass(), { values: o => [ { value: o.theName, func: x => 'asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj' } ] });