# KTypeProjection

Represents a type projection. Type projection is usually the argument to another type in a type usage.
For example, in the type `Array<out Number>`

, `out Number`

is the covariant projection of the type represented by the class `Number`

.

Type projection is either the star projection, or an entity consisting of a specific type plus optional variance.

See the Kotlin language documentation for more information.

### Constructors

### Properties

### Companion Object Properties

#### STAR

Star projection, denoted by the `*`

character.
For example, in the type `KClass<*>`

, `*`

is the star projection.
See the Kotlin language documentation
for more information.

`val STAR: KTypeProjection`

### Companion Object Functions

#### contravariant

Creates a contravariant projection of a given type, denoted by the `in`

modifier applied to a type.
For example, in the type `MutableList<in Number>`

, `in Number`

is a contravariant projection of the type of class `Number`

.

`fun contravariant(type: KType): KTypeProjection`

#### covariant

Creates a covariant projection of a given type, denoted by the `out`

modifier applied to a type.
For example, in the type `Array<out Number>`

, `out Number`

is a covariant projection of the type of class `Number`

.

`fun covariant(type: KType): KTypeProjection`

#### invariant

Creates an invariant projection of a given type. Invariant projection is just the type itself,
without any use-site variance modifiers applied to it.
For example, in the type `Set<String>`

, `String`

is an invariant projection of the type represented by the class `String`

.

`fun invariant(type: KType): KTypeProjection`