我想从源代码中删除Flow的详细程度。有没有办法在单独的文件中声明类型?
这就是我所拥有的:
// @flow
// src/writer.js
class Writer {
write(text: string):string {
return `I wrote ${text}`
}
}
这就是我想要实现的目标:
// @flow
// src/writer.js
class Writer {
write(text) {
return `I wrote ${text}`
}
}
// src/definitions/writer.js.flow
declare class Writer {
write(text: string):string
}
我尝试将writer.js.flow
放在flow-typed
文件夹中,我也尝试声明IWriter
Writer
扩展的func Login(w http.ResponseWriter, r *http.Request) {
fmt.Println("Login prccessing")
email := r.FormValue("email")
password := r.FormValue("password")
fmt.Println(email + password)
var netTransport = &http.Transport{
Dial: (&net.Dialer{
Timeout: 50 * time.Second,
}).Dial,
TLSHandshakeTimeout: 50 * time.Second,
}
var netClient = &http.Client{
Timeout: time.Second * 50,
Transport: netTransport,
}
res, err := netClient.Get("https://account.sloppy.zone/accounts/" + email)
if err != nil {
fmt.Println(err.Error())
http.Redirect(w, r, "/", http.StatusSeeOther)
}
responeData, errs := ioutil.ReadAll(res.Body)
fmt.Println(string(responeData))
if errs != nil {
log.Fatal(errs)
}
var info LoginInfo
json.Unmarshal(responeData, &info)
if email == info.Id && password == info.Password {
http.Redirect(w, r, "/manager", http.StatusSeeOther)
} else {
http.Redirect(w, r, "/", http.StatusSeeOther)
}
}
接口。 Flow并不喜欢它。
我不确定这是否可能,因为函数可以声明自己的变量,也应该正确注释。
答案 0 :(得分:3)
没有办法在Flow中完全按照自己的意愿行事。有一些支持的特定用例:
如果您有一些非Flow代码(可能是库)和一些Flow应用程序代码,并且您希望Flow代码可以使用非Flow代码但是知道涉及哪些类型,您可以为无类型代码编写"library definition"。重要的是要理解这个库定义没有针对实现代码进行检查,它只是假设是真的,所以你必须小心编写libdef。
如果您有Flow代码并且想要在没有Flow注释的情况下阅读或运行它,则可以使用flow-remove-types从文件中删除Flow语法。
但我认为你还想要别的东西。听起来你想要编写没有Flow注释的代码,然后在另一个文件中编写注释,但让Flow检查注释代码。这不是Flow目前支持的。
(顺便说一句,它也不是我希望他们会添加的东西。类型的主要好处是在阅读,编写和思考代码时提供帮助.Flow有很好的推理,所以总体来说你不喜欢#39; t必须写出那么多类型。但你所做的那些(如在导出的函数中)通常有助于思考代码。)