目前我这样做:
import {validators} from 'marker';
validators.isEmail('foo@bar.com');
相反,我想:
isEmail('foo@bar.com');
// Without cheating by just: `const isEmail = validators.isEmail`
我如何import
只有isEmail
符号?
这是一个小小的测试用例,请注意我的实际模块有很多验证器和其他子模块(不只是validators
)
declare var marker: marker.marker;
declare module marker {
export interface marker {
validators: IValidators;
}
export interface IValidators {
isEmail(input: string): boolean;
}
}
export = marker;
import * as vs from './validators'
export const validators = vs;
export function isEmail(input: string): boolean { return true }
答案 0 :(得分:0)
请注意确定您不想包含
的具体位置 // Without cheating by just: `const isEmail = validators.isEmail`
以下解决方案基于您不希望在使用validators.isEmail
的ts文件中定义isEmail的假设。
假设index.ts
标记包的主文件,您可以直接公开所有验证方法。
<强> index.ts 强>
import * as vs from './validators'
export const isEmail = vs.isEmail;
并使用如下,
import { isEmail } from 'marker';
isEmail('foo@bar.com');
您还必须对定义文件进行必要的更改。
希望这会有所帮助!!
答案 1 :(得分:0)
你应该作弊。但是你可以使用进一步的解构来更好地作弊(更多https://basarat.gitbooks.io/typescript/content/docs/destructuring.html)。而不是
const isEmail = validators.isEmail;
你可以
const {isEmail} = validators;
答案 2 :(得分:0)
你可以尝试
const { validators: { isEmail } } = require('marker');
isEmail('aaa@bbb');