如何解决没有构造函数的打字稿工厂
我最近遇到了以下代码:
package main
import (
"context"
"fmt"
"os"
"time"
"os/signal"
)
func main() {
ticker := time.NewTicker(time.Minute)
done := make(chan bool)
ctx,stop := signal.NotifyContext(context.Background(),os.Interrupt)
defer stop()
go func() {
for {
select {
case <-done:
return
case <-ticker.C:
h,m,_ := time.Now().Clock()
if m == 0 && ( h == 9 || h == 15 ) {
fmt.Printf("Doing the job")
}
}
}
}()
<-ctx.Done()
stop()
done <- true
}
如何在没有构造函数的情况下实例化 PizzaMaker?
解决方法
在任何支持原生类的环境中(例如 ES6 及更高版本),如果未提供构造函数,则会自动生成:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/constructor
如果您不提供自己的构造函数,则会为您提供默认构造函数。如果您的类是基类,则默认构造函数为空。
对于不支持原生类的环境(例如 ES5 和之前的),TypeScript 会为您生成默认构造函数:
class PizzaMaker {
create(event: { name: string; toppings: string[] }) {
return { name: event.name,toppings: event.toppings };
}
}
发出 JavaScript:
"use strict";
var PizzaMaker = /** @class */ (function () {
// Note: this empty function is the default constructor
function PizzaMaker() {
}
PizzaMaker.prototype.create = function (event) {
return { name: event.name,toppings: event.toppings };
};
return PizzaMaker;
}());
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。