繁体   English   中英

typescript 将 function 标记为实现接口

[英]typescript mark function as implementing an interface

我想指出一个 function 有望实现某个接口。

例如:

import { BrowserEvents, eventHandler, Event } from './browser-events'; 

export function setup(){
 const browserEvents = new BrowserEvents();
 browserEvents.onClicks(handleClicks);

 function handleClicks(ev: Event) {
   ev.preventDefault();
 }
}

我想告诉 typescript handleClicks应该匹配类型eventHandler 显然,如果handleClicks的签名与onClicks不匹配,ts 会抛出错误。 但我想像这样的语法在“源头”显示错误:

// (not valid syntax!)
function handleClicks(ev: Event) implements eventHandler {
  ev.preventDefault();
}

我也可以使用 function 作为变量,就像这样,但它会迫使我在使用 function 之前移动它:

const handleClicks: eventHandler = (ev: Event) => {
  ev.preventDefault();
}

browserEvents.onClicks(handleClicks);

那么,是否有强制常规 function 遵守签名的语法?

认为您可能可以执行以下操作:

(但不确定您要返回什么,所以我将其输入为void

interface FunctionInterface {
  (e: eventHandler): void;
}

function f1(e): FunctionInterface {
  e.preventDefault();
}

const f2: FunctionInterface = e => {
  e.preventDefault()
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM