我们用来as const缩小类型:
[ {foo: 'foo' }, { bar: 'bar' } ] as const
Run Code Online (Sandbox Code Playgroud)
但这也readonly为所有道具和值添加了修饰符。到目前为止const,这是有道理的,但我希望缩小范围,不使用readonly修饰符,因为您通常想要修改元组中的对象,或者只是将其进一步传递给某个方法,该方法具有相同的接口,但没有深层readonly
let foo = [ {foo: 'foo' }, { bar: 'bar' } ]
Run Code Online (Sandbox Code Playgroud)
这里 foo 的类型是:
({
foo: string;
bar?: undefined;
} | {
bar: string;
foo?: undefined;
})[]
Run Code Online (Sandbox Code Playgroud)
但我希望得到
[{
foo: string;
}, {
bar: string;
}]
Run Code Online (Sandbox Code Playgroud)
我们使用as const,但在大多数情况下这是不可能的,因为foo/bar得到深度嵌套的readonly修饰符,我们可以使用类似的东西
type DeepWritable<T> = { -readonly [P in keyof T]: DeepWritable<T[P]> …Run Code Online (Sandbox Code Playgroud) 在我的下一个游戏中,我计划将DOM背景图层与其上方的画布混合在一起.我想将非交互式背景动画移动到该DOM图层,并使用关键帧动画进行变换和不透明度变化,例如移动云,飞机等.
至于我,有2个专业人士:
简单的关键帧动画更容易创建.恕我直言
在最有趣的一点-它应该提高性能:
transform和opacity动画可以是GPU加速和在单独的线程执行.还是我错了?也许浏览器需要更多的时间来制作这些图层的组合,还是有其他一些注意事项?
这种技术的最大相反之处在于,我们可以将它主要用于装饰动画,而不是用于我们的游戏,因为控制这些动画是一项艰巨的任务.
有没有人有这种分层的经验?
先感谢您.
我对其他框架和架构原则有一些经验,我绝对不理解Angular团队决定directivies在RC6中弃用Component 的属性而转而支持declarationsNgModule.
通常,体系结构是关于封装的,但是如果组件的某些功能性应该由子组件封装,则子组件"泄漏"到模块,现在应该注册.
那么为什么在模块中有一个组件的逻辑树,所有这些都应该在NgModule中注册"普通"?
这种方法是否不会导致大量进口和退出的ngmodule?
我知道我们可以将所有内容拆分为多个模块,但在单个模块中,这样的全局"加载和注册"会让我记住script [src]html中的一堆全局标记.我以为我们已经离开了这个模式,但看起来像Angular回归它.
看来,我想念一下,有人可以解释一下吗?
[ 编辑1 ](打破AOT编译,请参阅edit-2)现在,我们模仿嵌套组件声明,以便每个组件导出使用过的组件列表,然后在NgModule中我们遍历所有根组件,收集它们的依赖关系并准备完整declarations列表.
它看起来像这样:
src/app
- /components/home-view/
- /toolbar
/menu-button
- menu-button.component.ts
- toolbar.component.ts
- home-view.component.ts
- app.module.ts
Run Code Online (Sandbox Code Playgroud)
app.module.ts
import { HomeViewComponent } from './components/home-view/home-view.component';
namespace Utils {
export function flatternDirectives (arr: any[] = []): any[] {
const declarations = arr.reduce((compos, compo) => {
compos.push(...flatternDirectives(compo.directives), compo);
return compos;
}, []);
return Array.from(new Set(declarations));
}
}
@NgModule({
declarations: Utils.flatternDirectives([
HomeViewComponent,
]),
bootstrap: …Run Code Online (Sandbox Code Playgroud) 我有EntityFramework的条目删除问题和同一实体的多对多关系.考虑这个简单的例子:
实体:
public class UserEntity {
// ...
public virtual Collection<UserEntity> Friends { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
流畅的API配置:
modelBuilder.Entity<UserEntity>()
.HasMany(u => u.Friends)
.WithMany()
.Map(m =>
{
m.MapLeftKey("UserId");
m.MapRightKey("FriendId");
m.ToTable("FriendshipRelation");
});
Run Code Online (Sandbox Code Playgroud)
Cascade Delete在Fluent API中定义?UserEntity例如,删除a的最佳方法是什么Foo?
现在找我,我一定要Clear对Foo的Friends集合,然后我需要加载的所有其他UserEntities,其中包含Foo在Friends,然后取出Foo从每个列表,之前我删除Foo的Users.但这听起来太复杂了.
是否可以直接访问关系表,以便我可以删除这样的条目
// Dummy code
var query = dbCtx.Set("FriendshipRelation").Where(x => x.UserId == Foo.Id || x.FriendId == Foo.Id);
dbCtx.Set("FriendshipRelation").RemoveRange(query);
Run Code Online (Sandbox Code Playgroud)谢谢!
Update01:
我知道这个问题的最佳解决方案是在调用之前执行原始sql语句SaveChanges: …
c# entity-framework code-first ef-code-first entity-framework-6
我正在研究一个简单的nodejs 电子(以前称为原子壳)项目.我正在使用angular 2编写它,使用项目设置与他们在打字稿文档中建议的相同项目设置:
TSC:
{
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts"
]
}
Run Code Online (Sandbox Code Playgroud)
我需要运行一个命令,我发现我可以使用节点"child_process"来完成它.无论如何我无法找到"import"或"require"它,同时从node.d.ts文件中使用它的类型.我在node.d.ts文件中找到了符合我需要的"child_process"接口,这就是它在node.d.ts文件中查看的方式:
declare module "child_process" {
import * as events from "events";
import * as stream from "stream";
export interface ChildProcess extends events.EventEmitter {
stdin: stream.Writable;
stdout: stream.Readable;
stderr: stream.Readable;
pid: number;
kill(signal?: string): void;
send(message: any, sendHandle?: any): void;
disconnect(): void;
unref(): void;
}
export function spawn(command: string, …Run Code Online (Sandbox Code Playgroud) 我想将我的php站点从虚拟机迁移到docker容器.我的网站将所有上传的文件保存到uploads目录中.现在我想将所有文件传输到S3 Storage并将进一步的上传保存到Amazon S3.但我不想重写php文件上传器类.是否可以在Docker中创建符号链接文件夹或虚拟文件夹,以便将uploads/**路径上的所有写入和读取"重定向"到S3存储.
Docker支持S3存储驱动程序,但我是docker的新手,并且不知道文件夹应该如何映射到dockerfile中的s3存储.我没有找到其他例子.
谢谢您的帮助.
更新:请参阅Taruns的回答.如果您也知道,托管环境中的AWS Storage Gateway是唯一一个很好的解决方案,请提升或分享您的想法.
我在我的查询中包含导航属性Include,以便以后不会延迟加载.但是,当我使用Select投影创建一个匿名的包装器对象时,它不起作用.
让我展示一下简化的例子. 实体:
public class UserEntity {
public string Name {get;set;}
public virtual ICollection<UserEntity> Friends { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
查询:
var entry = _dbCtx
.Users
.Include(x => x.Friends)
// Select here is simplified, but it shows the wrapping
.Select(user => new {
User = user
})
.First();
// Here we have additional lazy loaded DB call
var friends = entry.User.Friends.Select(x => x.Name).ToList();
Run Code Online (Sandbox Code Playgroud)
我也从生成的SQL中看到,导航属性不包括在内:
SELECT
[Limit1].[Name] AS [Name],
FROM ( SELECT TOP (1)
[Extent1].[Name] …Run Code Online (Sandbox Code Playgroud) 我创建了一个公共Web应用程序,可以访问我的私人电子表格数据.我可以捕获并记录异常try..catch,但是:
window.onerror?这些都是如此简单的问题,所以我很困惑地问他们,但经过几个小时的研究后我找不到答案.
先感谢您.
javascript exception-handling google-sheets google-apps-script
演示:
print()Run Code Online (Sandbox Code Playgroud)
@page {
size: A4 landscape;
margin: 0;
}
html, body {
margin: 0;
}
html {
background: cyan;
}
body {
width: 297mm;
height: 210mm;
background: red;
}Run Code Online (Sandbox Code Playgroud)
尺寸A4 landscape是正确的,但打印溢出到第二页.这些发生在Win 10 Chrome 63,FF 52和Edge 41中.
当我使用纵向尺寸并打印A4纵向时,只能按预期打印一页,没有任何溢出.
有没有人有这个问题的线索?它是否出现在每个平台上?
先感谢您
NPM 不遵循目录符号链接,也不遵循目录连接。是否有某种配置或方法可以强制 NPM 也包含此类目录中的文件?
\n最小的可重现示例。文件夹结构:
\nhello/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 foo/\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 foo.js\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 bar/\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bar.js\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 foo/ (SYMLINK)\n\nRun Code Online (Sandbox Code Playgroud)\n有两种类型的符号链接不起作用:
\nhello/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 foo/\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 foo.js\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 bar/\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bar.js\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 foo/ (SYMLINK)\n\nRun Code Online (Sandbox Code Playgroud)\nbar> mklink /J foo ..\\foo\nRun Code Online (Sandbox Code Playgroud)\n打包命令
\nbar> mklink /D foo ..\\foo\nRun Code Online (Sandbox Code Playgroud)\nfoo/foo.js生成没有文件夹的tar 包foo/。
bar> npm pack\nRun Code Online (Sandbox Code Playgroud)\n 我有多个 Github 存储库。所有这些gh-pages都已启用,并且可以通过路径访问存储库,例如:
username.github.io/repository1,username.github.io/repository2,...现在我正在尝试创建一个自定义子域docs.foo.tld并让我的所有存储库都gh-pages可以通过
docs.foo.tld/repository1docs.foo.tld/repository2...我已经创建了一个CNAME条目docs.foo.tldusername.github.io
但是当我在 github 上的存储库设置docs.foo.tld中添加此自定义域 ( )时repository1,gh-pages可以通过 直接访问docs.foo.tld,而不是通过docs.foo.tld/repository1
/repository1当对所有这些存储库使用相同的自定义子域时,我如何在路径段中使用/repository2所有这些存储库。
另请注意,当我尝试将此自定义子域添加到 时
repository2,我收到异常,因为CNAME已被采用。
我正在尝试使用这样的 checkValidity 函数验证表单的输入
let inputs = document.getElementsByTagName('input');
inputs = Object.values(inputs);
let textarea = document.getElementsByTagName('textarea');
textarea = Object.values(textarea);
inputs.push(textarea[0]);
for(let i=0;i<inputs.length;i++){
inputs[i].addEventListener('keyup', function(){
for(let i = 0;i<inputs.length;i++){
inputs[i].addEventListener('change', function(){
if($(inputs)[i].checkValidity()){
$(inputs)[i].classList.remove('inputInvalid');
$(inputs)[i].classList.add('inputValid');
}else{
$(inputs)[i].classList.remove('inputValid');
$(inputs)[i].classList.add('inputInvalid');
}
})
}
});
}Run Code Online (Sandbox Code Playgroud)
input.inputValid, textarea.inputValid{
border-color:green;
}
input.inputInvalid, textarea.inputInvalid{
border-color:red;
}
div{
margin:10px
}Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<span>Name*</span>
<input required type="text" size="40" class="text"/>
</div>
<div>
<span>Company Name</span>
<input type="text" size="40" class="text" />
</div>
<div>
<span>Telephone*</span>
<input required type="tel" size="40" class="text" />
</div>
<div>
<span>e-mail*</span> …Run Code Online (Sandbox Code Playgroud)javascript ×3
c# ×2
html ×2
typescript ×2
angular ×1
canvas ×1
code-first ×1
css ×1
docker ×1
dockerfile ×1
electron ×1
forms ×1
github ×1
github-pages ×1
html5 ×1
jquery ×1
linq-to-sql ×1
node.js ×1
npm ×1
npm-publish ×1
printing ×1
require ×1
systemjs ×1
validation ×1