目前我的类型定义为:
interface Param {
title: string;
callback: any;
}
Run Code Online (Sandbox Code Playgroud)
我需要这样的东西:
interface Param {
title: string;
callback: function;
}
Run Code Online (Sandbox Code Playgroud)
但第二个不被接受.
不确定这是否是一个愚蠢的问题,但我只是注意到了这一点:
public interface IActivityDao : IDao<Activity>
{
IList<Activity> GetAllSinceSequence(long sequence, int count);
}
public class ActivityDao : AbstractNHibernateDao<Core.Domain.Activity>, IActivityDao
{
public IList<Activity> GetAllSinceSequence(long sequence, int maxRecords)
{
}
}
Run Code Online (Sandbox Code Playgroud)
在我的实现中,我调用了第二个参数'maxRecords'.然而,在界面中,它被定义为"计数".编译器仍然认为接口已实现,这很好,但可能会导致一些歧义.显然,我应该重命名其中一个参数以匹配另一个参数.
在重命名之前我玩了一下,发现了一些有趣的东西.我不允许将我的界面声明为:
public interface IActivityDao : IDao<Activity>
{
IList<Activity> GetAllSinceSequence(long, int);
}
Run Code Online (Sandbox Code Playgroud)
这只是编译器对C#语义的过度保护吗?除了使代码更具可读性之外,接口方法中的参数名称的用途是什么?在我看来,如果在实现时不强制参数名称,它会引起歧义.
我有一个组件,我可以在其中传递我想要在模态中显示的内容,如下所示:
openConfirmModal() {
this.service.openmodal(
{
buttons: [ {name: 'Close'} ]
}
);
}
Run Code Online (Sandbox Code Playgroud)
模态服务是这样的:
openmodal(input: String) {
const dialogRef = this.dialog.open(popupComponent, {
data: new ModalConfirmData({
buttons: Object.values(data)[0]
})
});
}
Run Code Online (Sandbox Code Playgroud)
在我的 popupComponent 里面我有:
export class ModalPopupData {
actions: Array<Object>;
constructor(input?) {
if (input) {
this.buttons = input.buttons;
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在一切正常,但我现在想做的是将一个函数传递给我的服务,以便它使用它。像这样的东西,但我不知道如何:
{
function: (modalComponent) => {
modalComponent.close();
}
}
Run Code Online (Sandbox Code Playgroud) 我需要将现有的 javascript 代码克隆到 Typescript 中。JavaScript 是:
object.getsomething( function(err, result) {
// async
});
Run Code Online (Sandbox Code Playgroud)
如何输入参数function(err,result)?
我试过retrieve(func: function(err:string, result:string) : any){}
但我的智能感知说找不到“错误”和“结果”名称。我找不到任何有关“函数”类型的文档。