簡體   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