我想创建一个类型的对象Partial,其中键将是'a','b'或'c'的某种组合.它不会有所有3个键(编辑:但它至少会有一个).如何在Typescript中强制执行此操作?这里有更多细节:
// I have this:
type Keys = 'a' | 'b' | 'c'
// What i want to compile:
let partial: Partial = {'a': true}
let anotherPartial: Partial = {'b': true, 'c': false}
// This requires every key:
type Partial = {
[key in Keys]: boolean;
}
// This throws Typescript errors, says keys must be strings:
interface Partial = {
[key: Keys]: boolean;
}
Run Code Online (Sandbox Code Playgroud)
我上面尝试过的两种方法(使用映射类型和接口)无法达到我想要的效果.有人可以帮忙吗?
我正在实施二进制搜索.该函数返回在数组中找到的目标值的索引,否则返回-1.
我更喜欢处理索引i32而不是usize我需要在-1找不到目标时允许返回的负数.我明确地在函数的边缘进行投射,我认为这不是很好.这有什么更生锈的方式?
fn binary_search(nums: &[i32], target: i32) -> i32 {
let num_size: i32 = nums.len() as i32; // This seems bad
bsearch(nums, target, 0, num_size as usize)
}
fn bsearch(nums: &[i32], target: i32, lo: usize, hi: usize) -> i32 {
if hi < lo {
return -1;
}
let mid_idx = lo + ((hi - lo) / 2);
let guess = nums[mid_idx];
if guess > target {
bsearch(nums, target, lo, mid_idx - …Run Code Online (Sandbox Code Playgroud)