Interface CreateClassTypeDetails<Specifics>

Contains properties which are be relevant for all types to create, i.e. it is used for specifying details of all types to create.

interface CreateClassTypeDetails<Specifics extends TypirSpecifics> {
    associatedLanguageNode?: Specifics["LanguageType"];
    className: string;
    fields: CreateFieldDetails<Specifics>[];
    inferenceRulesForClassDeclaration: InferCurrentTypeRule<
        ClassType,
        Specifics,
        Specifics["LanguageType"],
    >[];
    inferenceRulesForClassLiterals: InferClassLiteral<
        Specifics,
        Specifics["LanguageType"],
    >[];
    inferenceRulesForFieldAccess: InferClassFieldAccess<
        Specifics,
        Specifics["LanguageType"],
    >[];
    methods: CreateMethodDetails<Specifics>[];
    superClasses?:
        | TypeDescriptor<ClassType, Specifics>
        | TypeDescriptor<ClassType, Specifics>[];
}

Type Parameters

Hierarchy (View Summary)

Properties

associatedLanguageNode?: Specifics["LanguageType"]

A node from the language might be associated with the new type to create, e.g. the declaration node in the AST (e.g. a FunctionDeclarationNode is associated with the corresponding FunctionType).

className: string
inferenceRulesForClassDeclaration: InferCurrentTypeRule<
    ClassType,
    Specifics,
    Specifics["LanguageType"],
>[]
inferenceRulesForClassLiterals: InferClassLiteral<
    Specifics,
    Specifics["LanguageType"],
>[]
inferenceRulesForFieldAccess: InferClassFieldAccess<
    Specifics,
    Specifics["LanguageType"],
>[]
superClasses?:
    | TypeDescriptor<ClassType, Specifics>
    | TypeDescriptor<ClassType, Specifics>[]