- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Angular 并且想知道为什么我不能将对象的值强制为确定的类型。我正在从数据库中检索数据,最终以字符串形式返回一些数字;由此我注意到实际上我并没有在我的值(value)观上强制执行类型。我有这个界面:
import { Category } from './category';
import { Country } from './country';
import { Grape } from './grape';
import { Producer } from './producer';
import { Region } from './region';
import { Type } from './type';
export interface Drink {
abv: number;
category: Category;
country: Country;
description: string;
grapes: Array<Grape>;
name: string;
price: number;
producers: Array<Producer>;
region: Region;
reviews: Array<number>;
type: Type;
vegan: boolean;
year: string;
}
虽然我从数据库中检索到的饮料对象的类型为(示例):
{
abv: string; <-----------string
category: Category;
country: Country;
description: string;
grapes: Array<Grape>;
name: string;
price: string; <-----------string
producers: Array<Producer>;
region: Region;
reviews: Array<string>; <------------string
type: Type;
vegan: boolean;
year: string;
}
我有一个名为“drinks”的对象,它保存从数据库中检索到的饮料(因此具有字符串值),尽管该对象的类型为:
public drinks : { [key: string]: Drink};
它编译没有错误。我也尝试创建专用界面,但没有成功。
既然“price”、“abv”、“reviews”在界面中涉及数字,编译时应该会报错吧?相反,我在 chrome 中得到了这个:
{
6: {
abv:"12.5" <---------------------string
category:{name: "sparkling"}
country:{name: "italy"}
description:"Lorem ipsum dolor sit amet, dolores adolescens eu mea. Ne cum eius necessitatibus. Ius ne ipsum fastidii dignissim. Putent nostro eu quo, vis agam mucius vocent id, cibo facilisis te pri. Libris ceteros vis te, nibh offendit no quo. Cu nec viris audiam."
grapes:Array(1)
0:{name: "glera"}
length:1
__proto__:Array(0)
name:"prosecco"
price:"15.00" <-----------------string
producers:[{…}]
region:{name: "lombardy", countryID: "2"}
reviews:(2) [5, "3"] <--------------string
type:{name: "conventional"}
vegan:true
year:"2016"
__proto__:Object
}
}
我不知道我错过了什么。感谢您的帮助。干杯。
最佳答案
我认为这里的误解是 TypeScript 的工作原理。这是一个编译时检查,所以如果您告诉它 Drink
有一个特定值的数字,它会在您的整个应用程序中强制执行该类型。同样,在编译时。因此,它不允许您将这些属性传递给需要不同类型的方法。
如果在运行时,您的 API 返回的是字符串而不是数字,它并不知道这一点。您必须在收到 API 的响应后转换它们。
关于javascript - TypeScript:在键上强制命名并在值上键入,这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51948537/
考虑代码: def foo() -> ??: return bar() 我怎么能说我希望 foo 的返回类型与 bar() 的返回类型相同? 在 C++ 中,我可以使用 decltype,类
我运行以下 mysql 查询并看到第一个查询的类型为 ALL。 mysql> EXPLAIN SELECT one.language_id as filter_id,
http://muaddibspace.blogspot.com/2008/01/type-inference-for-simply-typed-lambda.html是 Prolog 中简单类型 l
鉴于类型 type EnumerableComponentFactory = (config: { Container: React.ComponentType; Item: React.Co
我在我的自动 rmarkdown pdf 文档中使用 stargazer 包来制作漂亮的表格。默认情况下,Stargazer 将其表格放置在页面的中心。如何让观星者生成将表格与左侧对齐的 latex
class A: pass class B(A): pass ListOfA = List[A] list_of_a : ListOfA = [A(), A()] for e in [
我目前正在研究学习 WPF 和 Silverlight。到目前为止,我一直在用 Delphi 和 C# (Winforms) 进行开发。在看一些关于 WPF 的书籍和在线观看一些介绍性视频时,我的印象
在输入如下内容后: ) 按钮。但是那个按钮比较不方便。 (请注意,对于 Orientation="Horizontal" 等下拉选项不存在此问题,从下拉菜单中选择 Horizontal 后,插
我在输入以下内容时遇到问题。 问题在于 TeamIcon . 我的对象定义如下。 import TeamIcon from './components/icons/TeamIcon'; export
Demo 我这里有一个验证类是否存在于 div 中的演示。当没有类时,另一个类将从按钮中删除。基本上,当没有禁用按钮时,添加按钮上的禁用将被删除。 如果用户做的最后一件事是更改,这可以正常工作,但如果
这个问题在这里已经有了答案: How can I access object properties containing special characters? (2 个答案) 关闭 9 年前。 我
尝试创建一个 Web 应用程序(使用 mySQL 和 Python),其中包含马萨诸塞州的徒步旅行路线列表。我只想在一页上显示我的数据库中所有路径的名称,但不知道为什么什么都不显示: ########
您好,我想在使用 jQuery 的文本输入字段中键入时用点替换逗号。我现在有这段代码; $(document).on('change', '.unitprice', function() { $(
我为静态主页编写了以下代码。在这里我想使用类型化的库,它包含在部分“head.html”中。但是由于键入我的内容不断跳跃。这是因为在某个时刻字幕容器是空的。我试过添加默认占位符,但这似乎无法解决问题。
我想知道有没有类似于scanf的函数允许在c中自定义输入。我想要做的是当用户输入想要的日期时,每隔几个字符添加一个点。当用户想要确认他的输入时,他应该按下回车键,并且该变量被保存在某处。 示例:用户输
Java 中有没有办法让 ListModel 只接受特定类型?我要找的是类似 DefaultListModel 的东西或 TypedListModel ,因为 DefaultListModel 只实现
考虑如下数组类型: let example1: MyArray = ['John'], example2: MyArray = [4, 5, 1, 5, 'Eric'], exampl
我想弄清楚我是否正确输入了我的 React 高阶组件。在大多数情况下,这是正常工作的,但是在将 React 引用应用于 HOC 实例时,我遇到了输入问题。下面是一个简化的重现: import * as
这是 Python 3.7 我有一个这样的数据类: @dataclass class Action: action: str 但 Action 实际上仅限于值“bla”和“foo”。有没有一种明
我想弄清楚我是否正确输入了我的 React 高阶组件。在大多数情况下,这是正常工作的,但是在将 React 引用应用于 HOC 实例时,我遇到了输入问题。下面是一个简化的重现: import * as
我是一名优秀的程序员,十分优秀!