小编Bro*_*yer的帖子

TypeScript:将通用类型作为参数传递给通用类

TypeScript: 我在DataProvider类中有一个带有方法getTableData的方法:

public static getTableData<T extends DataObject>(type: { new(): T}): Array<T> { ... }
Run Code Online (Sandbox Code Playgroud)

当我编码时,这完美地工作:

let speakers = DataProvider.getTableData(Speaker);  // where Speaker is a class
Run Code Online (Sandbox Code Playgroud)

现在我想从泛型类中调用它:

export class ViewModelBase<T extends DataObject> {   
  public getData(): Array<T> {
    return <T[]> DataProvider.getTableData(T);
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,对于传递给getTableData的T参数,我收到一个找不到名称'T'的错误。应该如何调用getTableData?

更新:在@Paleo的帮助下,我想到了这个:

export class ViewModelBase<T extends DataObject> {   

  constructor(private dataObjectClass: { new(): T}){}

  public getTableData(): Array<T> {
    return <T[]> DataProvider.getTableData<T>(this.dataObjectClass);
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是,尽管我已经讲过: class SpeakerViewModel extends ViewModelBase<Speaker> { ... } 我希望它成为ViewModel,因为Speaker我仍然具有实例化之SpeakerViewModel类的东西:

let …

generics typescript

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

Docker端口绑定失败。为什么要“拒绝许可”?

我正在尝试jenkinsci/blueocean在Windows 10 Pro(最新)下启动一个容器。我正在运行一个脚本:

docker run ^
  --rm ^
  -u root ^
  -d ^
  -p 8080:8080 ^
  -p 50000:50000 ^
  -v D:/docker/jenkins/volumes/jenkins-data:/var/jenkins_home ^
  -v D:/docker/jenkins/volumes/docker.sock:/var/run/docker.sock ^
  -v D:/docker/jenkins/volumes/home:/home ^
  jenkinsci/blueocean
Run Code Online (Sandbox Code Playgroud)

这将失败,并显示以下消息:

docker: Error response from daemon: 
  driver failed programming external connectivity on endpoint elastic_kare: 
  Error starting userland proxy: 
    Bind for 0.0.0.0:50000: unexpected error Permission denied
Run Code Online (Sandbox Code Playgroud)

如果我忽略端口50000的绑定,则它可以正常工作,但是我需要50000端口才能与主机上的从设备进行通信。

将50000绑定到另一个端口无济于事。根据该端口未使用netstat -an。尝试以管理员身份运行脚本无济于事。

这里可能是什么问题?

更新:我重新启动了笔记本电脑,并将Docker桌面也更新到了最新版本。

update2:重新启动笔记本电脑后,我也重新启动了Docker(几次)。无济于事。

update3:关闭Windows防火墙无法解决问题。

windows jenkins docker

4
推荐指数
1
解决办法
2417
查看次数

NativeScript:如何避免在platforms/android中编辑build.gradle

为了让Firebase消息传递运行,我必须在platforms/android中的build.gradle文件中进行一些编辑.如果我做了,tns platform remove/add那么我的修改就不见了.是否有可能在app/App_Resources/android中放置一些东西以防止我的更改消失.这里考虑的是app/**在Git中,而platform/**不在.

nativescript

3
推荐指数
1
解决办法
895
查看次数

标签 统计

docker ×1

generics ×1

jenkins ×1

nativescript ×1

typescript ×1

windows ×1