type NullAbleType<T> = {[K in keyof T]: T[K] | null}
type User = {name: string, age: number, money: null, fn: (...arg: any[])=> void}
type FunctionType<T> = {[K in keyof T]: T[K] extends Function? T[K] : never}[keyof T]
type FunctionName = "fun"
type NullAbleUserAndRequireFunction<T> = NullAbleType<Partial<User>> & {[K in T extends FunctionName ? T: never]: FunctionType<User>}
const obj:NullAbleUserAndRequireFunction<FunctionName> = {name: null, age: 99, money: null, fun: ()=>{}}
If FunctionType allows null, more simple
type NullAbleType<T> = {[K in keyof T]: T[K] | null}
type User = {name: string, age: number, money: null, fn: (...arg: any[])=> void}
const obj:NullAbleType<Partial<User>> = {name: null, age: 99, money: null, fn: ()=>{}}