Unicode 文本分割需要访问字符的Grapheme_Cluster_Break属性。众所周知,JavaScript 没有以直接方式提供。我希望我能够在正则表达式中使用Unicode 属性转义来解决这个问题,但这似乎并不那么简单/\p{Grapheme_Cluster_Break=Extend}/u。你可以做\p{Grapheme_Extend},但那测试不同的东西。
有没有办法欺骗 JavaScript 运行时通过属性转义向我提供有关字符的 Grapheme_Cluster_Break 值的信息?(如果没有,为什么不呢?)
各个对可能具有不同的类型,但每个对应具有两个相同类型的值。如in [["foo", "bar"], [1, 2]]有效,但[["foo", 2]]无效。因此,[any, any][]过于宽泛。
有点像我想实例化type X<T> = [T, T]每个元素的类型,每个元素都不同T。(X<any>[]再次太宽泛)。
这可能吗?
(这是一个简化的问题,其中的元素是通用接口的实例,通常将其写为文字,我真的很喜欢TypeScript的帮助来捕获单个对象中的类型不匹配。)
TypeScript具有Partial默认定义的类型,因此您可以说Partial<{x: number, y: string}>获得类似{x?: number, y?: string}的类型(类型的属性变为可选)。定义为
type Partial<T> = {
[P in keyof T]?: T[P]
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试定义反函数,我们称之为Full<T>,以确保对象中的所有属性都是必需的。我从一个明显的定义开始:
type Full<T> = {
[P in keyof T]: T[P]
}
Run Code Online (Sandbox Code Playgroud)
只是Partial删除了问号。不幸的是,这不起作用-可选属性仍然是可选的。在某些情况下,打字稿似乎可以某种方式保留有关keyof类型中属性名称的要求的信息。
有趣的是,如果将该类型存储在中间类型名称中,则会删除该信息。即这有效:
type Config = {foo: number, bar?: string}
type ConfigKey = keyof Config
type FullConfig = {[K in ConfigKey]: Config[K]}
Run Code Online (Sandbox Code Playgroud)
在FullConfig(至少在TypeScript 3.3中)bar是必需的。但是,如果您内联keyof Config到的定义中FullConfig,则它又是可选的。
我希望这是一个单一的,易于使用的类型,并且由于我不知道用于定义本地类型的类型声明的方法,因此该技巧似乎并没有太大帮助。
有什么我想念的技巧吗?
如果我有这样的 HTML 结构:
<div style="display: flex; align-items: stretch; height: 150px; overflow: auto">
<div style="background: red; width: 30px"></div>
<div style="background: yellow; flex-grow: 2; height: 200px"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
在align-items: stretch将设置第一个孩子的身高在innerHeight柔性元素,而不是其实际的滚动高度。因此,当您向下滚动时,红色背景会停在初始视口的底部。
height: 100% 有一个类似的问题(高度是相对于父母的外尺寸)。
可以通过引入另一个包装元素并将overflow和height样式移动到该元素来解决此问题,但由于其他原因,在我的情况下这很尴尬。有没有办法让所有的 flex 孩子都具有相同的(完整的)高度而不这样做?
我正在使用 Ace Editor 在文本编辑器中加载 Html 内容,用户可以在其中编辑和保存自己的内容。因此用户可以退出并打开一个新的 HTML 。清除旧内容和加载新内容的程序是什么。
提前感谢您的帮助
javascript ×2
typescript ×2
ace-editor ×1
css ×1
flexbox ×1
html ×1
html-editor ×1
jquery ×1
overflow ×1
regex ×1
unicode ×1