class GenericClass { payload: T; } var genericObject = new GenericClass<{ greeting: string }>(); function genericFunction(object: GenericClass, callback: (payload: T) => void) { callback(object.payload); } genericFunction(genericObject, ({greeting}) => { var s = greeting.toLocaleLowerCase(); // Greeting should be of type string });