从webpack-merge如何编写函数声明只有一个数组作为第一个参数或元素的扩散
smart(...configuration | [...configuration])
考虑这个功能它可以接受一个且只有一个Configuration[]
或...args: Configuration[]
并返回Configuration
。
这个函数有什么类型?
UPDATE:
我想为的WebPack合并分型。
这是我迄今为止...
declare module 'webpack-merge' {
import { Configuration } from 'webpack'
type StrategyType = 'prepend' | 'append' | 'replace'
type StrategyMap = { [feild: string]: StrategyType }
type ConfigurationFolder = (
conf?: Configuration[],
...args: Configuration[]) => Configuration
export const merge: ConfigurationFolder
export const multiple: ConfigurationFolder
export const smart: ConfigurationFolder
export const smartStrategy: (options: StrategyMap) => ConfigurationFolder
export const unique: ConfigurationFolder
export default merge
}
...但预期它不工作。
下面是测试:
import * as webpackMerge from 'webpack-merge'
const webpackConfig = webpackMerge.smartStrategy({ entry: 'replace' })(
configs,
baseConfig
# must fail here: only one `Configuration[]` as first param,
# or only `Configuration, Configuration, Configuration, ....`
)
UPDATE2
我想要什么:
class Configuration { }
type Func = (...configuration: Configuration[]) => Configuration;
// usage
const myFunc: Func = (...configuration: Configuration[]) => {
return new Configuration();
}
const conf = new Configuration;
const confs = [conf];
const r1 = myFunc(confs); // right
const r2 = myFunc(conf); // right
const r3 = myFunc(conf, conf); // right
const f1 = myFunc(confs, confs); // must fail, cause can accept only one array
const f2 = myFunc(conf, confs); // must fail, cause or array, or spread
const f3 = myFunc(confs, conf); // must fail, same
Here is a playable version of what I want.
不明白。您想做什么? –
@PronoyMukherjee更新 – bjornmelgaard