Skip to content

instantiate from loader gives a type error #1192

Description

@9oelM

I tried to instantiate with asc loader, lilke this:

instantiate<{}>(wasm, {
  env: {
    abort: (msg: number, file: number, line: number, column: number) => {
      console.error("abort called at" + file + " " + line + ":" + column);
    }
  },
})

And It gives a following error:

error TS2411: Property 'env' of type '{ memory?: Memory | undefined; table?: Table | undefined; seed?: (() => number) | undefined; abort?(msg: number, file: number, line: number, column: number): void; trace?(msg: number, numArgs?: number | undefined, ...args: number[]): void; } | undefined' is not assignable to string index type 'Record<string, ImportValue>'.

I'm using assemblyscript@0.9.4-nightly.20200325.

The error was gone when I tried this:

export interface WasmEnv {
  env?: {
    memory?: WebAssembly.Memory,
    table?: WebAssembly.Table,
    seed?: () => number,
    abort?(msg: number, file: number, line: number, column: number): void,
    trace?(msg: number, numArgs?: number, ...args: number[]): void
  };
}

/** WebAssembly imports with two levels of nesting. */
export type Imports = WasmEnv & Record<string, Record<string, ImportValue>>;

instead of the existing type:

/** WebAssembly imports with two levels of nesting. */
export interface Imports extends Record<string, Record<string, ImportValue>> {
  env?: {
    memory?: WebAssembly.Memory,
    table?: WebAssembly.Table,
    seed?: () => number,
    abort?(msg: number, file: number, line: number, column: number): void,
    trace?(msg: number, numArgs?: number, ...args: number[]): void
  };
}

Yeah, so maybe the type definitions of the loader needs to be fixed.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions