# SchemaKind

`import { SchemaKind } from "destack:schema";`

Schema graph node kind.

```ds title="SchemaKind"
export enum SchemaKind {
    TypeLiteral = 1,
    InferVar = 2,
    Primitive = 3,
    Literal = 4,
    Reference = 5,
    Value = 6,
    This = 7,
    Unevaluated = 8,
    Readonly = 9,
    ValueOf = 10,
    ReferenceOf = 11,
    PointerOf = 12,
    In = 13,
    Extends = 14,
    Implements = 15,
    Array = 16,
    ArraySized = 17,
    Tuple = 18,
    Object = 19,
    Function = 20,
    Union = 21,
    Intersection = 22,
    Conditional = 23,
    Mapped = 24,
    Index = 25,
    TemplateLiteral = 26,
    Import = 27,
    Infer = 28,
    Predicate = 29,
    KeyOf = 30,
    Must = 31,
    Not = 32,
    Error = 33,
}
```

[language/library/src/schema/schema.ds:8:75](https://github.com/destack-sh/destack/blob/main/language/library/src/schema/schema.ds#L8-L75)

## Variants

### `TypeLiteral = 1`

Type literal.

### `InferVar = 2`

Inference variable used during analysis.

### `Primitive = 3`

Scalar primitive.

### `Literal = 4`

Scalar literal.

### `Reference = 5`

Reference to a declared type.

### `Value = 6`

Owned value type.

### `This = 7`

`this` type.

### `Unevaluated = 8`

Unevaluated type expression.

### `Readonly = 9`

Readonly type wrapper.

### `ValueOf = 10`

Owned form type.

### `ReferenceOf = 11`

Borrowed form type.

### `PointerOf = 12`

Pointer form type.

### `In = 13`

Type membership expression.

### `Extends = 14`

Type extension expression.

### `Implements = 15`

Type implementation expression.

### `Array = 16`

Dynamic array or slice type.

### `ArraySized = 17`

Fixed-size array type.

### `Tuple = 18`

Tuple type.

### `Object = 19`

Structural object type.

### `Function = 20`

Callable type.

### `Union = 21`

Union type.

### `Intersection = 22`

Intersection type.

### `Conditional = 23`

Conditional type.

### `Mapped = 24`

Mapped type.

### `Index = 25`

Indexed access type.

### `TemplateLiteral = 26`

Template literal type.

### `Import = 27`

Imported type.

### `Infer = 28`

Inference variable or binding.

### `Predicate = 29`

Predicate type.

### `KeyOf = 30`

`keyof T`.

### `Must = 31`

Non-null assertion type.

### `Not = 32`

Type negation.

### `Error = 33`

Compiler error type.
