小编Hal*_*alt的帖子

在ES6/Typescript中使用_(下划线)变量和箭头函数

我在一个Angular示例中遇到了这个构造,我想知道为什么选择它:

_ => console.log('Not using any parameters');
Run Code Online (Sandbox Code Playgroud)

我理解变量_意味着不关心/不使用但因为它是唯一的变量是有任何理由更喜欢使用_ over:

() => console.log('Not using any parameters');
Run Code Online (Sandbox Code Playgroud)

当然,这不能是一个字符少于键入.()语法在我看来更好地传达了intent,并且更具特定类型,因为否则我认为第一个示例应该是这样的:

(_: any) => console.log('Not using any parameters');
Run Code Online (Sandbox Code Playgroud)

如果重要,这就是使用它的背景:

submit(query: string): void {
    this.router.navigate(['search'], { queryParams: { query: query } })
      .then(_ => this.search());
}
Run Code Online (Sandbox Code Playgroud)

javascript typescript ecmascript-6 arrow-functions

98
推荐指数
4
解决办法
3万
查看次数

TSLint 将 body-parser 标记为已弃用

我有下面的打字稿代码:

import * as express from 'express';
import * as bodyParser from 'body-parser';

...
const app: express.Application = express();

app.use(bodyParser.json());

Run Code Online (Sandbox Code Playgroud)

在 VSCode 中,最后一行的 bodyParser 用黄色波浪线标记,表示不推荐使用 body-parser。

在 .d.ts 文件中,我看到以下内容:

/** @deprecated */
declare function bodyParser(
    options?: bodyParser.OptionsJson & bodyParser.OptionsText & bodyParser.OptionsUrlencoded,
): NextHandleFunction;

declare namespace bodyParser {
...
    function json(options?: OptionsJson): NextHandleFunction;
Run Code Online (Sandbox Code Playgroud)

为什么 linter 会抱怨 body-parser 函数,而我没有在我的代码中将它用作函数?我是否在 tsconfig.json 文件中遗漏了一些东西来防止这种情况发生?编译似乎没有问题。

typescript tslint body-parser

18
推荐指数
2
解决办法
9398
查看次数

在Typescript中可观察的<void>使用模式

当异步服务没有返回值但我想使用Observables我倾向于使用Observable<boolean>.但我对这个布尔值没有意义,因为服务失败或成功,如果失败,我希望Observable处于错误状态.这只为观察到的布尔值留下了"真实"值.

以下是Observable<void>针对这些情况使用的好模式吗?或者是否存在可预见的使用问题Observable<void>

const asyncFuncWithoutResult = (): Observable<void> => {
  // fake something async that has no return value

  const itWorked = true; // or not
  if (itWorked) {
    return Observable.of();
  } else {
    return Observable.throw(Error('It did not work'));
  }
}

// call the service
asyncFuncWithoutResult()
  .subscribe(
    undefined, // nothing will be emitted when using Observable.of()
    (err: any) => console.error(err), // handle error state
    () => console.log('Success'),     // handle success state
  );
Run Code Online (Sandbox Code Playgroud)

design-patterns void observable rxjs typescript

10
推荐指数
1
解决办法
5036
查看次数

为什么指定的初始值设定项不能在其基类中调用辅助初始值设定项?

根据文档,Objective-C中类的指定初始值设定项必须调用其基类的指定初始值设定项.

另一个规则是辅助初始化程序必须调用它们自己的类的指定初始化程序.

但是如果遵循第二条规则,为什么指定的初始化程序不能在其基类中调用辅助初始化程序?这个基础辅助初始化程序最终将调用它自己的级别的DI,因此该对象仍将被正确初始化,对吧?

差异似乎是谁选择缺失变量的默认值 - 您或您的基类.

inheritance coding-style objective-c designated-initializer

9
推荐指数
1
解决办法
1429
查看次数

防止Boost Spirit符号解析器过早接受关键字

如何在使用有效关键字(符号)启动时阻止Boost Spirit符号解析器接受关键字(符号).我希望构造失败解析'ONEMORE'作为一个整体而不能成功解析'ONE',因为这是一个有效的关键字,然后在'MORE'失败.

以下是代码的实际输出:

Keyword as a number: 1
Keyword as a number: 2
Keyword as a number: 1
Invalid keyword: MORETHREE
Run Code Online (Sandbox Code Playgroud)

这就是我喜欢的:

Keyword as a number: 1
Keyword as a number: 2
Invalid keyword: ONEMORE
Keyword as a number: 3
Run Code Online (Sandbox Code Playgroud)

代码只是一个示例来获得重点.

#include <boost/config/warning_disable.hpp>
#include <boost/spirit/include/qi.hpp>
#include <iostream>
#include <string>

using namespace std;
namespace qi = boost::spirit::qi;
namespace ascii = boost::spirit::ascii;

void printNumber( unsigned u )
{
    cout << "Keyword as a number: " << u << endl;
}

void printInvalidKeyword( …
Run Code Online (Sandbox Code Playgroud)

c++ boost symbols boost-spirit

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

MSBuild:VS. 2010中的本机C++项目的Custom.After.Microsoft.Common.targets

我已经读过使用"Custom.Before.Microsoft.Common.targets"和"Custom.After.Microsoft.Common.targets"以便在每个项目构建之前/之后执行自定义目标并且我想使用这种技术是为了在我们的TeamCity构建服务器上构建时更改版本信息.

问题是虽然它适用于C#项目,但它似乎不适用于本机C++项目.

在Microsoft.Cpp.targets文件中进行了一些挖掘之后,我发现对于本机C++项目,这似乎是通过设置$(ForceImportBeforeCppTargets)和$(ForceImportAfterCppTargets)来实现的.

我似乎无法在网上找到关于本地C++应用程序的这种技术的单一信息,所以我问我是否正在寻找正确的方向.

任何帮助表示赞赏.

c++ msbuild native visual-studio-2010

5
推荐指数
1
解决办法
5055
查看次数

模板中有两个默认参数,这里有什么问题?

下面的代码显示了2个Foo模板,每个模板有2个默认参数,Foo1有一个单独的原型而Foo2没有,否则它们是相同的.

为什么第一次调用Foo1会导致编译器(VS2010 Native C++)产生错误,而另外3个工作?

#include <limits>

// not needed but to prevent answers in this direction...
#undef max
#undef min

template< typename T >
void Foo1( T v1 = std::numeric_limits< T >::min(), T v2 = std::numeric_limits< T >::max() );

template< typename T >
inline
void Foo1( T v1, T v2 )
{
    // ...
}

template< typename T >
inline
void Foo2( T v1 = std::numeric_limits< T >::min(), T v2 = std::numeric_limits< T >::max() )
{
    // ...
}

int …
Run Code Online (Sandbox Code Playgroud)

c++ templates default visual-studio-2010

5
推荐指数
1
解决办法
125
查看次数

当有本地mergeinfo时,SVN 1.8合并(分支重用)似乎被破坏了

新的1.8 subversion客户端有问题(我们使用TortoiseSVN 1.8.5和SlikSVN 1.8.5).似乎在重新集成后能够继续使用您的功能分支的新SVN 1.8功能在某些情况下不起作用.

当trunk包含本地mergeinfo(文件或子树上的Mergeinfo)时,它不起作用.这可能会导致重新集成后分支重用的问题.如果使用'keep alive dance'(使用仅记录选项)完成分支重用,这对1.7客户端来说不是问题.

我已经制作了一个从头开始说明这个问题的脚本.它可以使用1.8客户端针对空存储库运行.

下面的脚本有10个步骤.步骤1-5用于创建在主干中具有本地mergeinfo的起始情况.步骤6-9模拟在功能分支2的生命周期内对主干进行的更改.步骤10是失败的步骤,它模拟重新集成后重用特征分支的第一步.

这是步骤10中的错误:

svn: E195016: Reintegrate can only be used if revisions 8 through 11 were pre
viously merged from svn://svn2010/practice/branches/featurebranch2 to the reinte
grate source, but this is not the case:
  trunk/file1.txt
    Missing ranges: /trunk/file1.txt:9
Run Code Online (Sandbox Code Playgroud)

这是(Windows)脚本.

@ECHO OFF
ECHO ------------------------------------------------------------------
ECHO STEP 0: Create a repository
ECHO ------------------------------------------------------------------
if exist repo rmdir repo /S/Q
if exist trunk rmdir trunk /S/Q
if exist featurebranch1 rmdir featurebranch1 /S/Q
if exist featurebranch2 rmdir featurebranch2 …
Run Code Online (Sandbox Code Playgroud)

svn version-control svn-merge mergeinfo svn-merge-reintegrate

5
推荐指数
1
解决办法
2770
查看次数