小编Cor*_*hon的帖子

Typescript:将泛型函数类型参数的Parameters<T>元组作为可变参数传递

在 Typescript 4.1.x 中,您可以将元组类型作为可变参数传播到函数中。

\n
type MyTuple = [string, number];\nconst myTuple: MyTuple = ["blob", 42];\n\nfunction tupleFunc(s: string, n: number): void {\n    console.log(`${s} ${n}`);\n}\n\ntupleFunc(...myTuple); // \xe2\x9c\x85 A-Ok\n
Run Code Online (Sandbox Code Playgroud)\n

Parameters<T>但是,当元组从泛型类型参数派生并使用实用程序类型时,我遇到了错误。

\n
function foo(a: number, b: boolean, c: string) {\n  return 10;\n}\n\nfoo(1, true, "baz") // 10 \xe2\x9c\x85\n\nfunction bar(...params: Parameters<typeof foo>) {\n    return foo(...params)\n}\n\nbar(1, true, "baz") // 10 \xe2\x9c\x85\n\nfunction bar2<F extends typeof foo>(...params: Parameters<F>) {\n  //  next line would work\n  //  return foo(params[0], params[1], params[2])\n\n  return foo(...params); // Fails \n …
Run Code Online (Sandbox Code Playgroud)

generics types typescript typescript4.0

8
推荐指数
1
解决办法
1万
查看次数

部署新的Webpack捆绑包会导致错误,直到页面刷新

我们使用带有React的webpack 1.x捆绑我们的应用程序.此外,为了在javascript文件发生变化时破坏缓存,我们将输出设置webpack.config.js为:

output: {
    path: __dirname + '/dist',
    filename: 'index_bundle.[chunkhash:10].js',
    publicPath: '/'
},
Run Code Online (Sandbox Code Playgroud)

这成功地实现了我们在部署新版本应用程序时更改文件名的目标.在成功部署后,可以看到新文件存在.

当用户在部署期间在应用程序上时,会出现皱纹.突然之间,曾经存在的块没有,并且当index.html成功更新时,浏览器当前正在使用的一些块会对旧的,不存在的文件产生错误请求.

webpack是否有传统的方式来处理交换机?或者在我们的React应用程序中,让它优雅地处理错误的组件导入.我们主持S3,它(就像Meteor,我的印象)在一个不存在的文件请求上回退到index.html.在我们的应用程序中,这会导致Syntax error: Unexpected token <错误,因为它需要javascript而不是HTML.

编辑:为了避免我的React应用程序中的错误导入,也许我可以在路由的index.js文件中应用逻辑?目前我的getComponent调用看起来像这样:

getComponent(nextState, callback) {
  require.ensure([], (require) => {
    callback(null, require('./components/HomePage').default);
  });
}
Run Code Online (Sandbox Code Playgroud)

编辑2: 在这里找到我的问题的答案.

reactjs webpack react-router code-splitting

6
推荐指数
1
解决办法
495
查看次数