问题描述
我最近遇到了以下代码:
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;
}());