Skip to content

Support parsing import.meta #22861

@justinfagnani

Description

@justinfagnani

import.meta does not parse. import.meta is stage 3 and implemented in Chrome/V8. See the TC39 proposal here: https://github.com/tc39/proposal-import-meta

TypeScript Version: 2.7.0-dev.201xxxxx

Search Terms:
import.meta

Code

const u = import.meta.url;

Expected behavior:

import.meta at least parses when output is esnext.

For downlevel emit, specific meta-properties like import.meta.url, would presumably have to be handled differently. For import.meta.url a project could be given a base URL from which module base URLs are calculated from given their path.

Or a custom transform could be used. Any solution requires that import.meta parse though.

Actual behavior:

Syntax error.

Playground Link:

http://www.typescriptlang.org/play/#src=const%20i%20%3D%20import.meta.url%3B

Related Issues:

Activity

DanielRosenwasser

DanielRosenwasser commented on Mar 25, 2018

@DanielRosenwasser
Member

What would the type be? any? Changing it after the fact would be breaking.

justinfagnani

justinfagnani commented on Mar 25, 2018

@justinfagnani
Author

As far as I know, import.meta is host defined, so by default I don't think it could be anything other than object. The node and dom typings should define import.meta.url as string.

mhegazy

mhegazy commented on Mar 26, 2018

@mhegazy
Contributor

As far as I know, import.meta is host defined, so by default I don't think it could be anything other than object. The node and dom typings should define import.meta.url as string.

I would say the type should be:

interface ImportMeta {
    [x: string]: any;
}

This allows say node to define some well-known import.meta fields.

added this to the TypeScript 2.9 milestone on Mar 26, 2018
justinfagnani

justinfagnani commented on Mar 26, 2018

@justinfagnani
Author

I guess there are two options:

interface ImportMeta {
    [x: string]: any;
}

and

interface ImportMeta {
}

The latter would require that you import some typings that define specific fields, or cast your way out of an error.

locked and limited conversation to collaborators on Jul 31, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Domain: ES ModulesThe issue relates to import/export style module behaviorES NextNew featurers for ECMAScript (a.k.a. ESNext)FixedA PR has been merged for this issueSuggestionAn idea for TypeScript

Type

No type

Projects

No projects

Relationships

None yet

    Development

    No branches or pull requests

      Participants

      @justinfagnani@DanielRosenwasser@mhegazy@sheetalkamat

      Issue actions

        Support parsing import.meta · Issue #22861 · microsoft/TypeScript