Javascript typescript中的数据URI导入
在纯JS中,我们可以使用带有数据uri的导入语句,例如:Javascript typescript中的数据URI导入,javascript,typescript,Javascript,Typescript,在纯JS中,我们可以使用带有数据uri的导入语句,例如: import { number, fn } from 'data:text/javascript;charset=utf-8;base64,ZXhwb3J0IGNvbnN0IG51bWJlciA9IDQyOwpleHBvcnQgY29uc3QgZm4gPSAoKSA9PiAiSGVsbG8gd29ybGQiOw=='; 或动态: import('data:text/javascript;charset=utf-8;base64,ZXhw
import { number, fn } from 'data:text/javascript;charset=utf-8;base64,ZXhwb3J0IGNvbnN0IG51bWJlciA9IDQyOwpleHBvcnQgY29uc3QgZm4gPSAoKSA9PiAiSGVsbG8gd29ybGQiOw==';
或动态:
import('data:text/javascript;charset=utf-8;base64,ZXhwb3J0IGNvbnN0IG51bWJlciA9IDQyOwpleHBvcnQgY29uc3QgZm4gPSAoKSA9PiAiSGVsbG8gd29ybGQiOw==')
.then(module => console.log(module));
但是,将相同的代码放入typescript文件会导致“找不到模块”错误
我的tsconfig.json如下所示:
{
"compilerOptions": {
"module": "esnext",
"lib": [
"esnext",
"es6",
"dom"
],
"moduleResolution": "node",
"outDir": "./build",
"noImplicitAny": false,
"removeComments": true,
"preserveConstEnums": true,
"sourceMap": true,
"target": "es6",
"jsx": "react"
},
"include": [
"src/**/*", "../addon/build/background.js"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
模块解析的Typescript文档没有提到数据:。。。据我所见。有没有办法让它在typescript中工作?请参阅typescript手册中的
你可以这样做:
// types.d.ts
declare module "data:text/javascript;*" {
export const number: number;
export function fn(): string;
}
// index.ts
/// <reference path="types.d.ts"/>
import { number, fn } from 'data:text/javascript;charset=utf-8;base64,ZXhwb3J0IGNvbnN0IG51bWJlciA9IDQyOwpleHBvcnQgY29uc3QgZm4gPSAoKSA9PiAiSGVsbG8gd29ybGQiOw==';
//types.d.ts
声明模块“数据:text/javascript;*”{
导出常量编号:编号;
导出函数fn():字符串;
}
//索引
///
从'data:text/javascript'导入{number,fn};字符集=utf-8;base64,ZXHWB3J0IgnVbNN0IG51BWJLCIA9IDQYOWPLEHBVCNQGY29UC3QGZM4GPSAOKSA9PIAISGSBG8GD29YBGQIOW==';
这告诉Typescript一个与
数据匹配的导入:text/javascript
前缀将公开一个number
属性(作为数字类型)和一个fn
属性(返回字符串)。适当调整模块声明以符合进口商的语义。谢谢。这似乎适用于静态导入,但动态导入仍然失败。不管怎样,你把我带到了正确的轨道上,我一直在想这一切都错了。