我有一个Person带有名称和 ID的记录,以及一个createPerson返回Personwithout的函数,将id生成 UUID 留给调用者。:
-- Person.hs
import Data.UUID (UUID)
data Person = Person { name :: String, id :: UUID }
createPerson name = Person { name = name }
Run Code Online (Sandbox Code Playgroud)
有没有办法在Person没有id,的情况下输入 a来通知调用者id Person将抛出异常?我考虑过定义 aPartialPerson如下:
data PartialPerson = { name :: String }
Run Code Online (Sandbox Code Playgroud)
但是当我想添加或更改字段时,这很快就会变得很麻烦。
将[required]注释添加到3个模型上的2个属性并运行后add-migration,运行时出现以下错误update-database。
ALTER TABLE ALTER COLUMN UserId failed because one or more objects access this column.
The index 'IX_Task_UserId' is dependent on column 'UserId'.
我的up()迁移如下所示:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_TaskList_AspNetUsers_UserId",
table: "TaskList");
migrationBuilder.DropForeignKey(
name: "FK_Template_AspNetUsers_UserId",
table: "Template");
migrationBuilder.DropForeignKey(
name: "FK_Task_AspNetUsers_UserId",
table: "Task");
migrationBuilder.AlterColumn<string>(
name: "UserId",
table: "Task",
nullable: false);
migrationBuilder.AlterColumn<string>(
name: "TaskName",
table: "Task",
nullable: false);
migrationBuilder.AlterColumn<string>(
name: "UserId",
table: "Template",
nullable: false);
migrationBuilder.AlterColumn<string>(
name: "TemplateName",
table: "Template",
nullable: false);
migrationBuilder.AlterColumn<string>( …Run Code Online (Sandbox Code Playgroud) asp.net asp.net-mvc entity-framework entity-framework-core asp.net-core
我有一个从 API 获取一些数据的组件。该组件有一个loading成员变量,用于确定是否应显示加载图标。当数据获取完成时,loading设置为 false,以隐藏加载图标。无论是否发生错误,都应该发生这种情况。
目前,我已实现如下:
export class MyComponent implements OnInit {
loading = true;
data;
constructor(private dataService: DataService) { }
ngOnInit() {
this.dataService.getData().subscribe(data => {
this.data = data;
this.loading = false;
},
() => {
this.loading = false;
});
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法消除重复this.loading = false。如果我使用Promises,这就是我使用Promise.finally()回调的目的——但我没有。RxJS 中是否有等效的方法,或者更好的方法来实现这一点?
我使用 Typescript 和 es2017 作为编译目标,使用 Javascript 的新async/ await。
我目前有以下代码来从 TS 服务类(简化)中获取一些数据:
class MyClass {
public static async initialize(): Promise<void> {
const data = await this.getItems();
// do unrelated initialization stuff
return new Promise<void>(() => {});
}
private static async getItems(): Promise<Item[]> {
return await Service.fetchData();
}
}
class Service {
public static async fetchData(): Promise<Item[]> {
// Performs an XHR and returns a Promise.
}
}
Run Code Online (Sandbox Code Playgroud)
此作品,但它是有很多清洁,如果MyClass::initialize()不返回任何东西,而不是返回new Promise<void>(() => {});然而,这似乎是不可能的,因为任何方法/函数使用await 具有被标记 …
在Haskell中,有没有办法简化以下代码以消除“hello world”的重复?换句话说,将f、g和h应用于hello world?
fn = do
a <- f "hello world"
b <- g "hello world"
c <- h "hello world"
return (a, b, c)
Run Code Online (Sandbox Code Playgroud) haskell ×2
javascript ×2
typescript ×2
angular ×1
asp.net ×1
asp.net-core ×1
asp.net-mvc ×1
async-await ×1
asynchronous ×1
monads ×1
record ×1
rxjs ×1
types ×1