小编Bor*_*ijk的帖子

Visual Studio代码 - 调整导入报价设置

在Visual Studio代码中使用TypeScript时,类型上的导入建议(由空格+句点触发)将使用双引号生成导入.

我们的TypeScript linter验证在可能的情况下使用单引号.

如下所示,该建议有双引号("@angular/...") 用双引号导入建议

如何调整导入设置?

typescript visual-studio-code

65
推荐指数
6
解决办法
3万
查看次数

使用Gradle的Eclipse多项目中的访问限制

我在Eclipse中有一个包含多个子项目的Gradle项目.我目前有子项目A,B和C.

项目A应该可以访问项目B.项目B应该可以访问项目C.但是项目A 应该访问项目C.

A -> B, B -> C, but not A -> C
Run Code Online (Sandbox Code Playgroud)

我可以通过在Project A中使用java示例类来尝试使用Project C中的类来轻松地测试它.

我使用Gradle在主build.gradle文件中使用以下设置并使用transitive属性实现了这一点:

project(':projectA') {
    dependencies {
        compile project(':projectB'), {
            transitive = false
        }
    }
}

project(':projectB') {
    dependencies {
        compile project(':projectC'), {
            transitive = false
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

compileJava在Project A的示例类上运行Gradle 会给出正确的错误消息.我想将此错误作为Eclipse中的编译错误.我还能够以所需关系保持的方式手动配置类路径,但Gradle Refresh/Rebuild再次重置类路径.

是否可以使用Gradle的Java编译器而不是Eclipse编译器?或者我应该在进行Gradle Refresh/Rebuild时影响类路径文件?可能有不同的解决方案吗?

我想知道这种情况的首选方法是什么.谢谢!

java eclipse compilation multi-project gradle

11
推荐指数
1
解决办法
494
查看次数

在Stream中过滤Null项

使用Java Stream时,映射后有时会出现空值.目前,当需要省略这些值时,我使用:

.stream()
.<other operations...>
.filter(element -> element != null)
.<other operations...>
Run Code Online (Sandbox Code Playgroud)

对于更实用的样式,可以快速编写一个小辅助方法:

public static <T> boolean nonNull(T entity) {
    return entity != null;
}
Run Code Online (Sandbox Code Playgroud)

这样您就可以使用方法引用:

.stream()
.<other operations...>
.filter(Elements::nonNull)
.<other operations...>
Run Code Online (Sandbox Code Playgroud)

我找不到这样的jdk方法,即使我怀疑他们已经包含了一个.这里有不同的方法吗?或者他们是否因为某种原因而忽略了这一点?

java null java-8 java-stream

11
推荐指数
1
解决办法
8267
查看次数

如何在编写Gradle插件时测试afterEvaluate

我正在编写一个自定义的Gradle插件.我正在为我想在插件中创建的每个功能编写测试.我正在使用java编写插件.

我在apply从Plugin接口继承的方法中创建我的任务.

我对项目构建生命周期的afterEvaluate阶段中可用的任务有很多依赖性,但不是很快(至少不是在applyfase中),我无法控制这些外部任务的定义方式.

所以我使用了定义这些任务的依赖关系

project.afterEvaluate((project) -> {
    customTask.dependsOn(project.getTasks().getByName("nameOfTheTask"));
});
Run Code Online (Sandbox Code Playgroud)

在测试代​​码中,我使用JUnit和gradle测试工具包进行以下设置:

@BeforeClass
public static void initializeProject() {
    project = ProjectBuilder.builder().build();

    customPlugin = new CustomPlugin();
    customPlugin.apply(project);
}
Run Code Online (Sandbox Code Playgroud)

我可以通过检索我的任务来检查测试用例中的常规(即在afterEvaluate块之外)依赖项

project.getTasks().findByName("customTask").getDependsOn()
Run Code Online (Sandbox Code Playgroud)

但是,对于为特定生命周期定义的依赖项,或者更一般地,作为闭包,这是不可能的.

有没有办法测试是否为某个生命周期设置了正确的依赖项?或者有没有办法检索注册这样的代码块?

PS我可以使用投射,反射,阴影,修改等但我真的很想听听这是否可以测试,或者我可能会采取错误的方法.谢谢!

java tdd gradle gradle-plugin

6
推荐指数
2
解决办法
912
查看次数

测试角2组件与构造函数的参数

说我有一个角2组件有两个输入参数:

@Component{... (omitted for clarity)}
export class SomeComponent {

@Input() a: number
@Input() b: number

}
Run Code Online (Sandbox Code Playgroud)

当我想测试这个组件我有这样的:

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [
        SomeComponent,
      ],
    })
    .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(SomeComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });
Run Code Online (Sandbox Code Playgroud)

createComponent调用不带任何参数或允许我调用构造函数。我怎样才能实例化/测试各种数值的组成部分?

testing unit-testing typescript angular

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

将Typescript类发布为npm包

我已经编写了一组Typescript类,它们将作为NPM模块发布到我们的内部包服务器中。我的其他项目能够使用NPM检索此依赖关系。

我想以这样一种方式发布类:可以通过引用包本身来导入它们,类似于我正在使用的其他一些包,例如Angular。

import { SomeClass } from 'mylibrary'
Run Code Online (Sandbox Code Playgroud)

这是我当前的设置:

我写了一个./mylibrary.d.ts文件:

export * from './dist/foldera/folderb'
//etc
Run Code Online (Sandbox Code Playgroud)

./package.json

"name": "mylibrary",
"main": "mylibrary.d.ts",
"files": [
  "mylibrary.d.ts",
  "dist/"
],
"types": "mylibrary.d.ts",
//ommitted other settings
Run Code Online (Sandbox Code Playgroud)

src/tsconfig.json

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "../dist/",
    "baseUrl": "src",
    "sourceMap": true,
    "declaration": true,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2016",
      "dom"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用所需的语法导入包时,MS VS Code表示一切正常,但是运行我的项目会产生相当隐秘的错误消息:

Module build failed: Error: Debug Failure. False expression: Output …
Run Code Online (Sandbox Code Playgroud)

node.js npm typescript

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

使用Scala中的函数映射实例

假设我有一个本地方法/功能

def withExclamation(string: String) = string + "!"
Run Code Online (Sandbox Code Playgroud)

Scala中是否有通过提供此方法来转换实例的方法?假设我想在字符串中附加感叹号.就像是:

val greeting = "Hello"
val loudGreeting = greeting.applyFunction(withExclamation) //result: "Hello!"
Run Code Online (Sandbox Code Playgroud)

我希望能够在实例上编写链转换时调用(本地)函数.

编辑:多个答案显示如何编程这种可能性,所以似乎这个功能不存在于任意类.对我来说,这个功能似乎非常强大.考虑在Java中我想在String上执行许多操作:

appendExclamationMark(" Hello! ".trim().toUpperCase()); //"HELLO!"
Run Code Online (Sandbox Code Playgroud)

操作顺序与他们阅读的方式不同.最后一个操作appendExclamationMark是出现的第一个单词.目前在Java中我有时会做:

Function.<String>identity()
    .andThen(String::trim)
    .andThen(String::toUpperCase)
    .andThen(this::appendExclamationMark)
    .apply(" Hello "); //"HELLO!"
Run Code Online (Sandbox Code Playgroud)

哪个在表示实例上的操作链方面读得更好,但是也包含很多噪声,并且在最后一行使用String实例并不直观.我想写:

" Hello "
    .applyFunction(String::trim)
    .applyFunction(String::toUpperCase)
    .applyFunction(this::withExclamation); //"HELLO!"
Run Code Online (Sandbox Code Playgroud)

显然,applyFunction函数的名称可以是任何东西(请更短).我认为向后兼容是Java Object没有这个的唯一原因.有没有任何技术原因可以解释为什么没有添加Any或AnyRef类?

scala function

2
推荐指数
1
解决办法
72
查看次数