mylingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
20 lines (18 loc) • 709 B
text/typescript
type NotArray = object & { length?: never }
export type ExtractProps<Type> = {
[Property in keyof Type]: NonNullable<Type[Property]> extends string
? StringConstructor
: NonNullable<Type[Property]> extends number
? NumberConstructor
: NonNullable<Type[Property]> extends boolean
? BooleanConstructor
: NonNullable<Type[Property]> extends Function
? FunctionConstructor
: NonNullable<Type[Property]> extends Array<any>
? ArrayConstructor
: NonNullable<Type[Property]> extends Object
? NonNullable<Type[Property]> extends NotArray
? ObjectConstructor
: Array<any>
: NumberConstructor
}