我试图创建自己的类型,在这些类型上我可以使用点语法
调用函数。
let myOwnType: myByteType = 123211345;
myOwnType.toHumanReadable(2);
interface Number {
/**
* Returns a string representation of an object.
* @param radix Specifies a radix for converting numeric values to strings. This value is only used for numbers.
*/
toString(radix?: number): string;
/**
* Returns a string representing a number in fixed-point notation.
* @param fractionDigits Number of digits after the decimal point. Must be in the range 0 - 20, inclusive.
*/
toFixed(fractionDigits?: number): string;
/**
* Returns a string containing a number represented in exponential notation.
* @param fractionDigits Number of digits after the decimal point. Must be in the range 0 - 20, inclusive.
*/
toExponential(fractionDigits?: number): string;
/**
* Returns a string containing a number represented either in exponential or fixed-point notation with a specified number of digits.
* @param precision Number of significant digits. Must be in the range 1 - 21, inclusive.
*/
toPrecision(precision?: number): string;
/** Returns the primitive value of the specified object. */
valueOf(): number;
}
interface Bytes {
toHumanReadable(decimals: number): bytesToHumanReadable;
bytesAs(unit: string): string;
}
function bytesToHumanReadable (decimals: number) {
// convert bytes to GB, TB etc..
}
我如何创建自己的类型并像普通类型一样使用它们?我知道接口也不工作,但这是我的第一个猜测。
问题是我找不到函数bodys在哪里以及如何定义。
它们由JavaScript引擎定义,作为标准库的一部分。您可以在number.prototype
上找到它们。它的工作原理如下:当您试图访问一个原语的属性(例如Somenumber.toString()
)时,JavaScript引擎会在该原语的对象类型原型上查找该属性(number=>number
,string=>string
,等等)。如果您正在进行调用,它将调用该方法,传入基元(在严格模式下)或基元的对象包装器(在宽松模式下)。
您不能定义自己的基元类型,这只能在JavaScript规范级别上完成。
class Byte {
constructor(public value: number) {
}
yourMethodHere() {
// ...
}
}
例如,这将向数字添加Tohex
方法:
// Adding it to the type
interface Number {
toHex(): string;
}
// Adding the implementation
Object.defineProperty(Number.prototype, "toHex", {
value() {
return this.toString(16);
},
enumerable: false, // This is the default, but just for emphasis...
writable: true,
configurable: true
});
操场上的活生生的例子
当我们使用术语"类库"时,我们一般指的是位于libraries 文件夹中的类,它们在wiki的"类库参考"这个板块被讨论.在当前这个话题中,我们将讨论如何在 application/libraries 文件夹中建立你自己的类库,并使它们与全框架的资源维持分离. 作为一个额外的功能,当你需要在原始类中简单地添加一些功能时,CodeIgniter能使你的类库extend 自原始类.你甚至可以通过在ap
好吧,所以我试图在Java创建自己的LinkedList类(带有泛型类型),但是遇到了一些问题。我创建了一个LinkedListNode类,它基本上设置并获取next和right指针以及节点的键。我的LinkedList类代码发布在下面,如果您编译并运行,您会发现它没有按照应该的方式设置列表。此刻,我正在尝试在节点x之后插入节点y,但我的打印输出看起来像: 键:5-上一键:6-下一键:6键:6-上
如果你只需要掌控一个应用的全部的消息和触发的事件,那么使用默认的**/**命名空间即可。如果你想要利用第三方代码,或者分享你的代码给别人,http://socket.io提供了一种命名一个socket的途径。 使用多路由控制一条单一的连接是有好处的。比如下方的示例代码,客户端发起两个WebSocket连接,而服务器端使用多路由技术仅仅只需要建立一个连接。 服务器端(app.js) var io =
如果您在开发共享库的公司工作,或者您在开源或商业库中工作,则可能需要开发自己的自动配置。 自动配置类可以捆绑在外部jar中,仍然可以通过Spring Boot获取。 自动配置可以与“启动器”相关联,该“启动器”提供自动配置代码以及您将使用它的典型库。 我们首先介绍了构建自己的自动配置需要了解的内容,然后我们将继续介绍创建自定义启动器所需的典型步骤。 可以使用演示项目来展示如何逐步创建启动器。 4.
在Java你有很多列表函数。例如: List.size(),List.is空()... 是否有可能使我自己的函数,如List.null或空(),我怎么能做到这一点? 这会对我帮助很大。
我读了很多关于这个问题的文章,我确实找到了一些处理它的文章——但不幸的是,我不能真正理解如何解决我的问题。 现在我正在创建WebService(使用Tomcat 7),我想共享接口。我有大约8个相互关联的接口。例如: 问题是,在创建WAR(用于接口C)文件并尝试在tomcat中部署webservice后,tomcat出现了一个错误,如下所示: 严重:WSSERVLET11:无法分析运行时描述符:c