在Typescript中,是否可以在导入时将from路径动态设置为变量?
例如,转一下:
import {HomeComponent} from './dashboard/home/home.component';
类似这样的东西:
let hompageComponentPath = './dashboard/home/home.component';
import * from hompageComponentPath;
我必须为我正在做的一个小项目编写Javascript。为此,我曾想过创建一个TypeScript项目并将其编译成一个Javascript文件,这样我的SDK的用户就可以将该文件插入到他们的网页中。
然而,我只是了解到,如果我使用import,并试图编译成一个文件,那么它只支持SystemJS。
那么,如何将TypeScript项目编译成单个JS文件,以便在浏览器中使用?
通过在浏览器中使用,我的意思是如果我在TypeScript中创建一个类TypeScript,那么我可以在dev控制台中这样做:
var x = new App();
我已经做了一个多小时了,我发现的一切似乎都表明这是不可能的。
我是TypeScript的新手,正在尝试将我目前的JavaScript转换为TypeScript。
在JS中,我的结构如下:
var roles = {
x: require('role.x'),
y: require('role.y')
};
为了以后迭代这些角色,如下所示:
for (var index in roles) {
var role = new roles[index];
if (someObject.role == role.role) {
role.run(someObject);
}
}
然而,在Type
我有一个接口Person,我在其中添加了另一个属性(参见下面的示例)。 我想导出它,但是我出现了'Person' only refers to a type, but is being used as a value here.错误。 // test.d.ts
interface Person {
age: number,
name: string
}
interface Person {
canCode: boolean
}
export Person // => 'Person' only refers to a type, but
在TypeScript外部模块声明(整个.d.ts文件或另一个文件中的declare module块)中,默认情况下,即使没有标记export,也会导出所有符号。添加一个语句的Luke export { ... }会抑制这种行为,因此只导出标记为export的符号。
示例my-module.d.ts
export const a = 1;
declare const b = 2;
export {};
consumer.ts
import { a } from "./my-module"; // OK
import { b } from "./my-module
我将TypeScript转换为ES2015 (因为我需要异步,等待),然后将ES2015转换为Node4支持的ES2015 (Node4与ES2015不完全兼容)。
问题是express的TypeScript定义不包含default字段。但是这个字段实际上存在于Javascript代码中。(实际上express只是一个例子,例如在许多其他库bluebird中都存在问题)
因此,如果我导入import {default as express} from "express";,则会出现编译TypeScript错误。如果作为import * as express from "
我正在尝试使用中的代码。它使用反射。这里有一份副本:
export function CustomComponent(annotation: any) {
return function (target: Function) {
var parentTarget = Object.getPrototypeOf(target.prototype).constructor;
var parentAnnotations = Reflect.getMetadata('annotations', parentTarget);
var parentAnnota
Foo.ts的内容:
let a: Person = new Person();
Bar.ts的内容:
class Person {}
tsconfig.json文件包含由tsc --init创建的默认值集。
我使用的是typescript版本2.6.2。
上面的代码只是简单地编译,没有关于未定义Person的错误。如果我在foo.ts中将Person重命名为Persons,那么它确实抛出了一个错误消息cannot find name 'Persons'。所以它就像是在以某种方式自动导入这个文件。
还要注意,我没有在bar.ts中导出Person类。如果我确实添加了一个expo
有没有办法在同一个TypeScript文件中同时导入和导出相同名称的变量?
例如,以下情况:
import { State as UIState } from './ui'
import { State as ConnectionState } from './connection'
export { State as UIState } from './ui'
export { State as ConnectionState } from './connection'
export type State = {
u
是
import type { Foo, Bar as Baz } from './'
和
type Foo = import('./').Foo
type Bar = import('./').Baz
等价物?
请注意,此上下文中的import()不是动态导入,而是TypeScript 2.9中引入的。您可以在中输入这两个示例,以验证语法/类型是否有效。
我想使用import type,但也要为TS < 3.8创建声明。
如果上面的断言是真的,我可以对发出的声明文件应用AST转换。