Type alias WritablePropertyNames<T>

WritablePropertyNames<T>: {
    [K in keyof T]-?: T[K] extends Callback
        ? never
        : (<F>() => F extends {
                    [Q in K]: T[K]
                }
                ? 1
                : 2) extends (<F>() => F extends {
                    -readonly [Q in K]: T[K]
                }
                ? 1
                : 2)
            ? K
            : never
}[keyof T]

Given an object T, returns a unioned type of all non-readonly property names.

Type Parameters

  • T