JavaScript函数parseInt可用于强制将给定参数转换为整数,无论该参数是字符串,浮点数,数字等.
在JavaScript中,没有错误parseInt(1.2)会产生1,但是,在TypeScript中,它会在编译期间抛出一个错误:
error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'.
Run Code Online (Sandbox Code Playgroud)
我在这里遗漏了什么,或者是TypeScript的预期行为?
str在已经是字符串的对象上调用函数的成本(如果有的话)是多少?这里的用例是规范化不同类型的对象数组并将它们转换为字符串,天真地可以这样实现:
def arr_2_strarr(arr):
return [str(val) for val in arr]
Run Code Online (Sandbox Code Playgroud)
但如果str()导致过多的开销,并且我arr主要包含字符串,我可以考虑使用:
def arr_2_strarr2(arr):
return [str(val) if not isinstance(val, basestring) else val for val in arr]
Run Code Online (Sandbox Code Playgroud)
有什么建议?
更新:这些检查用于编译时,而不是在运行时.在我的例子中,失败的案例都是在编译时捕获的,我期待其他应该失败的情况下的类似行为.
假设我正在编写一个类似于表的类,我希望该类的所有成员都是相同长度的数组,如:
class MyClass {
tableHead: string[3]; // expect to be a 3 element array of strings
tableCells: number[3]; // expect to be a 3 element array of numbers
}
Run Code Online (Sandbox Code Playgroud)
到目前为止我发现的最接近的解决方案是:
class MyClass {
tableHead: [string, string, string];
tableCells: [number, number, number];
}
let bar = new MyClass();
bar.tableHead = ['a', 'b', 'c']; // pass
bar.tableHead = ['a', 'b']; // fail
bar.tableHead = ['a', 'b', 1]; // fail
// BUT these also pass, …Run Code Online (Sandbox Code Playgroud) 在tsconfig.json文件中使用"strict"选项时,我收到错误:
error TS5023: Unknown compiler option 'strict'
Run Code Online (Sandbox Code Playgroud)
但官方文档中明确允许使用此编译器选项:
参考:https://www.typescriptlang.org/docs/handbook/compiler-options.html
还有我的Visual Studio代码编辑器.
有谁知道我做错了什么?这是我的tsconfig.json文件:
{
"compilerOptions": {
"strict": true,
"sourceMap": true
}
}
Run Code Online (Sandbox Code Playgroud) 我的循环导入有问题,所以我将蓝图导入移到我的应用定义下面.但是,我仍然有导入错误.
Traceback (most recent call last):
File "/Applications/PyCharm CE.app/Contents/helpers/pydev/pydevd.py", line 2217, in <module>
globals = debugger.run(setup['file'], None, None)
File "/Applications/PyCharm CE.app/Contents/helpers/pydev/pydevd.py", line 1643, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "/Users/benjamin/Documents/Projects/website/server/app/app.py", line 15, in <module>
from views import site
File "/Users/benjamin/Documents/Projects/website/server/app/views.py", line 2, in <module>
from models import User
File "/Users/benjamin/Documents/Projects/website/server/app/models.py", line 3, in <module>
from database_setup import db
File "/Users/benjamin/Documents/Projects/website/server/app/database_setup.py", line 1, in <module>
from app import app
File "/Users/benjamin/Documents/Projects/website/server/app/app.py", line 15, in <module>
from views …Run Code Online (Sandbox Code Playgroud) 我刚从NoSQL迁移到SQL,而且我对SqlAlchemy ORM很新.
在我的用例中,我需要模型中的一个字段才能存储给定的选择集:
# models.py
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.utils.types.choice import ChoiceType
Base = declarative_base()
class User(Base):
__tablename__ = 'user'
USER_TYPES = [
('user', 'User'),
('admin', 'Admin User')
]
id = Column(Integer(), primary_key=True)
type = Column(ChoiceType(User_Types), default='user')
Run Code Online (Sandbox Code Playgroud)
但是当我运行我的脚本时,我得到:
> SAWarning: Unicode column 'None' has non-unicode default value 'user' specified.
self.default
Run Code Online (Sandbox Code Playgroud)
并且在我设置默认值并且不键入"ChoiceType"的其他字段上没有错误.
谁知道我做错了什么?
谢谢!
我正在尝试使用 TypeScript 的编译器 API 来执行非常基本的类型推断,但我无法从文档或谷歌搜索中找到任何有用的信息。
本质上,我想要一个函数inferType,它接受一个变量并返回它的推断定义:
let bar = [1, 2, 3];
let bar2 = 5;
function foo(a: number[], b: number) {
return a[0] + b;
}
inferType(bar); // => "number[]"
inferType(bar2); // => "number"
inferType(foo); // "(number[], number) => number"
Run Code Online (Sandbox Code Playgroud)
无论如何,我可以通过编译器 API 实现这一点吗?如果没有,无论如何我可以通过其他方式实现这一目标吗?
我正在构建一个 Chrome 扩展程序,并且依赖于一些 NPM 模块。虽然我确实有 webpack 来帮助打包生产环境的东西,但在开发过程中加载我解压的扩展程序时,Chrome 似乎会考虑整个目录,大致是340M! 这也使得调试和测试变得很困难,因为单击打开 Chrome 扩展弹出需要 3 到 5 秒。
我一直在谷歌搜索文件中是否有选项,manifest.json但没有任何帮助。我错过了一些明显的东西吗?
如果没有,推荐的工作流程是什么?我应该将所有内容输出到一个/dist文件夹中并将我的manifest.json文件放在那里吗?
假设我的Schema看起来像这样:
class User(Document):
username = StringField()
password = StringField()
category = StringField()
Run Code Online (Sandbox Code Playgroud)
想象一下,我们有这些现有的类别:"avengers", "justice-leaguers", "villains",我想执行一个"group by"查询,User.objects.all()以便我可以得到这样的东西:
[
[<User: IronMan object>, <User: Thor object>, <User: Hulk object>],
[<User: Superman object>,<User: Batman object>],
[<User: Ultron object>, <User: Joker object>, <User: LexLuthor object>]
]
Run Code Online (Sandbox Code Playgroud)
或者更好的是:
{
"avengers": [<User: IronMan object>, <User: Thor object>, <User: Hulk object>],
"justice-leaguers": [<User: Superman object>,<User: Batman object>],
"villains": [<User: Ultron object>, <User: Joker object>, <User: LexLuthor object>]
}
Run Code Online (Sandbox Code Playgroud)
我查看了MongoEngine的文档,但还没有找到任何有用的信息.多谢你们!
我正在尝试使用Semantic UI的弹出模块,它在我的项目上的定位方面从未正常工作,因为它在演示中.我尝试了几次黑客攻击(设置位置relative等),但没有运气; 这是一个小提琴:http:
//jsfiddle.net/smt94eox/
我打算在按钮的左上方显示弹出窗口,因为它在盘旋:
$('#smile').popup({
inline: true,
hoverable: true,
position: 'top left'
});
Run Code Online (Sandbox Code Playgroud)
但悬停时,弹出窗口显示在页面底部.有谁知道为什么以及如何解决这个问题?
typescript ×4
python ×3
flask ×2
javascript ×2
css ×1
jquery ×1
mongodb ×1
mongoengine ×1
pymongo ×1
semantic-ui ×1
sqlalchemy ×1
string ×1
typechecking ×1