首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何严格检查类的构造函数参数的流类型接口?

如何严格检查类的构造函数参数的流类型接口?
EN

Stack Overflow用户
提问于 2016-11-11 19:21:17
回答 1查看 416关注 0票数 0

在为构造函数的参数使用接口时,是否有可能得到更严格的编译时间检查?默认行为似乎过于宽松。

例如,给定以下类:

代码语言:javascript
运行
复制
// @flow
'use strict';

import type { Bar } from './bar';

export default class Foo {

   _bar: Bar;
   _name: string;

   constructor (bar: Bar, name: string) {
     this._bar = bar;
     this._name = name;
   }
}

以及在另一个地方定义的以下接口:

代码语言:javascript
运行
复制
// @flow
'use strict';

export interface Bar {
  doSomething(someArg: string);
}

如果我用某种原始类型创建Foo的无效实例,我将得到一个错误:

代码语言:javascript
运行
复制
// In any of these flowtype checking works and fails because 
// it knows those things are not Bar.

new Foo('bar', 'someName'); 
new Foo(1, 'someName');
new Foo({}, 'someName');

但如果我做这样的傻事:

代码语言:javascript
运行
复制
new Foo(new Function(), 'someName');

flowtype对此非常满意,而且这种类型违背了在一开始就定义接口的目的。如果我可以传入任何类型的实例对象,而for类型没有看到传入的内容与接口不匹配,那么它应该抛出一个错误,就像对{}那样。

有什么配置我需要改变或者我做错了什么吗?

编辑:

我认为这可能是一个错误,并已提交了一个问题

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-11 22:27:06

显然是一个已知的问题

现在,函数实例的属性是any类型,即使它们是未定义的。:(

我的问题被当作副本结束了。这解释了我问题中的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40554798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档