第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

跨項目共享原始類型的自定義方法的打字稿

跨項目共享原始類型的自定義方法的打字稿

冉冉說 2021-08-25 10:20:41
我正在嘗試實現(xiàn)二叉搜索樹(Github repo)。對于insert(data: T),find(data: T)和等操作remove(data: T),我在 Java 中看到了一些具有以下簽名的示例:class BST<T extends Comparable<? super T>> { ... }我相信有了這個簽名,它可以讓我們創(chuàng)建一個包含對象的 BST 作為Node. 像這樣的東西:class Person implements Comparable<Person> {  private String name;  private Integer age;  ///...  ///..  @override  int compareTo(Person otherObj) {    // return 0 | -1 | 1;  }}我想通過 TypeScript 中的泛型實現(xiàn)類似的東西。以下是我面臨的問題,需要幫助/建議:與 Java 不同,JS 原始類型沒有compareTo方法 - 因此我的問題是 - 如何向原始類型添加方法并在整個項目中共享該定義。與創(chuàng)建namespace?interface Number {  compareTo(o: number): number;}Number.prototype.compareTo = function(o: number) {  // add checks for corner cases  return this > o ? 1 : this < o ? -1 : o;}let a = 2;let b = 3;a.compareTo(b); // -1;我的第一個問題是如何在整個項目中共享這種新的原型方法?替代方案有人可以提出一些替代方案,以某種方式為所有類型的數(shù)據(jù)構(gòu)建通用二叉搜索樹。class BST <T | T extends Comparable<T>> implements Tree<T> {...}但這給了我編譯錯誤,說Comparable is being used as a value when it is only a _type_除其他語法錯誤外。我的想法是:T應(yīng)該是原始類型,或者應(yīng)該是實現(xiàn)Comparable<T>接口的類型。
查看完整描述

1 回答

?
翻過高山走不出你

TA貢獻1875條經(jīng)驗 獲得超3個贊

  1. 除非包含文件是 ES6 模塊,否則該聲明應(yīng)該有效,在這種情況下,您必須declare global { ... }繞過接口聲明。如果它不起作用,你得到了什么錯誤?

  2. 最好的辦法可能是讓構(gòu)造函數(shù)BST接受一個 type 的比較器(x: T, y: T) => number。然后調(diào)用者可以根據(jù)需要使用帶有比較器的原始類型而不是標準排序。


查看完整回答
反對 回復(fù) 2021-08-25
  • 1 回答
  • 0 關(guān)注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號